likes
comments
collection
share

使用 DT-SDK 创建可交互的地图与 GUI 控制面板本篇文章介绍了如何通过 DT-SDK 初始化三维地球场景,并使用

作者站长头像
站长
· 阅读数 46
前言

在 WebGis 开发中,灵活的交互功能和视觉效果调整对于提升用户体验至关重要。通过 DT-SDK,我们可以轻松实现这些功能。这篇文章将展示如何使用 DT-SDK 初始化地图并通过 dat.GUI 库提供的控制面板实时调整地图的视觉效果。最终,我们将实现一个支持切换 2D、2.5D、3D 模式、显示或隐藏天空盒、太阳、月亮、大气层等多种效果的交互式地图。

组件库地址:www.shuqin.cc/component/s…

演示地址:www.shuqin.cc/preview/sta…

功能概述

本篇文章的目标是实现以下功能:

  • 初始化带有高德影像地图的场景
  • 动态切换 2D、2.5D、3D 视图模式
  • 控制天空盒、太阳、月亮、大气层等视觉元素的显示与隐藏
  • 使用 dat.GUI 提供的图形化界面调整这些设置
核心代码实现
1. 初始化 Viewer 和高德地图图层

在初始化 Viewer 的同时,我们会通过 DT-SDKImageryLayerFactory 添加高德地图作为基础图层。

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 会自动生成浮动的控制面板。

效果展示
  • 启动页面后,你将看到高德地图作为基础图层显示在浏览器中。
  • 用户可以通过 dat.GUI 的控制面板自由切换 2D、2.5D 和 3D 视图。
  • 通过简单的点击操作,可以选择显示或隐藏天空盒、太阳、月亮和大气层,或启用/禁用阴影和抗锯齿效果。

使用 DT-SDK 创建可交互的地图与 GUI 控制面板本篇文章介绍了如何通过 DT-SDK 初始化三维地球场景,并使用

总结

在本篇文章中,我们展示了如何使用 DT-SDK 初始化地图场景并通过 dat.GUI 提供的交互界面调整地图的各项视觉效果。这种方式不仅提升了用户体验,还极大地方便了开发者在项目中的调试和效果管理。下一篇文章中,我们将探讨更多关于数据展示与交互的高级功能,敬请期待。

参考资料
转载自:https://juejin.cn/post/7423341587520569383
评论
请登录