- 作者:老汪软件技巧
- 发表时间:2024-10-11 07:01
- 浏览量:
在 WebGis 开发中,灵活的交互功能和视觉效果调整对于提升用户体验至关重要。通过 DT-SDK,我们可以轻松实现这些功能。这篇文章将展示如何使用 DT-SDK 初始化地图并通过 dat.GUI 库提供的控制面板实时调整地图的视觉效果。最终,我们将实现一个支持切换 2D、2.5D、3D 模式、显示或隐藏天空盒、太阳、月亮、大气层等多种效果的交互式地图。
组件库地址:…
演示地址:…
本篇文章的目标是实现以下功能:
核心代码实现1. 初始化 Viewer 和高德地图图层
在初始化 Viewer 的同时,我们会通过 DT-SDK 的 ImageryLayerFactory 添加高德地图作为基础图层。
let viewer = undefined;
function initViewer() {
viewer = new DT.Viewer('viewer-container');
// 创建高德地图图层
let baseLayer = DT.ImageryLayerFactory.createImageryLayer(DT.ImageryType.AMAP, {
style: 'img',
crs: 'WGS84'
});
// 将图层添加到 Viewer 中
viewer.addBaseLayer(baseLayer);
addGuiController(); // 添加控制面板
}
DT.ready(initViewer);
2. 使用 GUI 控制面板动态调整场景效果
为了让用户可以实时调整场景的模式和效果,我们使用了 dat.GUI 库创建一个图形化控制面板。用户可以通过它来调整显示选项,比如天空盒、太阳、月亮、大气层、抗锯齿等。
function addGuiController() {
let controls = {
sceneMode: 3, // 初始设置为 3D 模式
showSkyBox: true,
showSun: true,
showMoon: true,
showAtmosphere: true,
enableFxaa: true,
shadows: false,
};
let gui = new dat.GUI();
// 场景模式控制(2D、2.5D、3D)
gui.add(controls, 'sceneMode', { '2D': 2, '2.5D': 2.5, '3D': 3 }).onChange(value => {
viewer.changeSceneMode(Number(value), 2);
});
// 控制天空盒显示
gui.add(controls, 'showSkyBox').onChange(value => {
viewer.setOptions({
skyBox: { show: value }
});
});
// 控制太阳显示
gui.add(controls, 'showSun').onChange(value => {
viewer.setOptions({
showSun: value
});
});
// 控制月亮显示
gui.add(controls, 'showMoon').onChange(value => {
viewer.setOptions({
showMoon: value
});
});
// 控制大气层显示
gui.add(controls, 'showAtmosphere').onChange(value => {
viewer.setOptions({
showAtmosphere: value
});
});
// 控制抗锯齿效果
gui.add(controls, 'enableFxaa').onChange(value => {
viewer.setOptions({
enableFxaa: value
});
});
// 控制阴影效果
gui.add(controls, 'shadows').onChange(value => {
viewer.setOptions({
shadows: value
});
});
}
HTML 结构
为了正常渲染地图和 GUI 控制面板,确保页面上有相应的容器元素:
<div id="viewer-container" style="width: 100%; height: 100vh;">div>
viewer-container 是三维场景渲染的容器,dat.GUI 会自动生成浮动的控制面板。
效果展示
总结
在本篇文章中,我们展示了如何使用 DT-SDK 初始化地图场景并通过 dat.GUI 提供的交互界面调整地图的各项视觉效果。这种方式不仅提升了用户体验,还极大地方便了开发者在项目中的调试和效果管理。下一篇文章中,我们将探讨更多关于数据展示与交互的高级功能,敬请期待。
参考资料