当前位置: 首页 > news >正文

Cesium快速入门到精通系列教程十九:Cesium 1.95 中地图模式

在 Cesium 1.95 中,可以通过 ​​viewer.scene.mode​​ 来获取当前的地图模式(即场景模式),并通过 ​​viewer.scene.morphTo2D()、viewer.scene.morphTo3D()、viewer.scene.morphToColumbusView()​​ 等方法来切换地图(场景)模式。

一、Cesium 中的场景模式(Scene Mode)

Cesium 支持以下三种主要的场景模式:

  1. ​​3D(三维球模式)​​:viewer.scene.mode === Cesium.SceneMode.SCENE3D
  2. ​​2D(二维平面模式)​​:viewer.scene.mode === Cesium.SceneMode.SCENE2D
  3. ​​哥伦布视图(CV,二维展开的地球,类似2.5D)​​:viewer.scene.mode === Cesium.SceneMode.COLUMBUS_VIEW

这些模式定义在 Cesium.SceneMode枚举中。

二、获取当前地图(场景)模式

你可以通过访问 viewer.scene.mode来获取当前的场景模式,然后与 Cesium.SceneMode中的常量进行比较:

// 获取当前场景模式
const currentMode = viewer.scene.mode;if (currentMode === Cesium.SceneMode.SCENE3D) {console.log("当前是 3D 模式");
} else if (currentMode === Cesium.SceneMode.SCENE2D) {console.log("当前是 2D 模式");
} else if (currentMode === Cesium.SceneMode.COLUMBUS_VIEW) {console.log("当前是哥伦布视图(CV)模式");
}

或者你也可以打印出 currentMode的值看看(它是一个数字枚举值,例如 0、1、2,但不建议直接依赖数值):

console.log(viewer.scene.mode); // 输出如:2 (代表 SCENE3D)

提示:​​

Cesium.SceneMode.SCENE3D的值为 2

Cesium.SceneMode.COLUMBUS_VIEW的值为 1

Cesium.SceneMode.SCENE2D的值为 0

但为了代码可读性和维护性,​​推荐使用常量名称进行比较​​,而不是直接使用数字。

三、通过代码设置(切换)地图模式

Cesium 提供了以下几个方法用于切换场景模式:

1. 切换到 3D 模式(球形地球)

viewer.scene.morphTo3D();

2. 切换到 2D 模式(平面地图)

viewer.scene.morphTo2D();

3. 切换到哥伦布视图(CV,2.5D,可缩放的平面投影)

viewer.scene.morphToColumbusView();

注意:​​

这些 morph 方法(如 morphTo3D)是​​异步的​​,它们会触发场景的平滑过渡动画。如果你不想要动画,可以传入参数 {duration: 0},例如:

viewer.scene.morphTo3D({ duration: 0 }); // 立即切换,无动画

如果你只是想“设置”模式而不关心过渡动画,使用这些 morph 方法是最标准的方式。

四、完整示例代码

下面是一个完整的示例,展示如何获取当前模式并根据需要切换模式:

// 假设你已经创建了 viewer
const viewer = new Cesium.Viewer('cesiumContainer');// 获取当前模式
function getCurrentMode() {const mode = viewer.scene.mode;let modeName;if (mode === Cesium.SceneMode.SCENE3D) {modeName = '3D';} else if (mode === Cesium.SceneMode.SCENE2D) {modeName = '2D';} else if (mode === Cesium.SceneMode.COLUMBUS_VIEW) {modeName = 'Columbus View (CV)';}console.log('当前模式是:' + modeName);return mode;
}// 切换到 3D
function switchTo3D() {viewer.scene.morphTo3D({ duration: 1.0 }); // 1秒动画过渡到3D
}// 切换到 2D
function switchTo2D() {viewer.scene.morphTo2D({ duration: 1.0 });
}// 切换到 CV
function switchToCV() {viewer.scene.morphToColumbusView({ duration: 1.0 });
}// 示例:点击按钮或初始化后调用
getCurrentMode(); // 打印当前模式// 你可以根据需要调用切换函数,比如绑定到 UI 按钮
// switchTo3D(); // 切换到3D
// switchTo2D(); // 切换到2D
// switchToCV(); // 切换到CV

五、总结

功能

方法/属性

说明

​获取当前地图模式​

viewer.scene.mode

返回当前是 SCENE3DSCENE2D或 COLUMBUS_VIEW

​判断当前模式​

与 Cesium.SceneMode枚举比较

如 if (viewer.scene.mode === Cesium.SceneMode.SCENE3D)

​切换到 3D 模式​

viewer.scene.morphTo3D([options])

可传入 {duration: 0}无动画

​切换到 2D 模式​

viewer.scene.morphTo2D([options])

同上

​切换到 CV 模式​

viewer.scene.morphToColumbusView([options])

http://www.dtcms.com/a/422853.html

相关文章:

  • 内网穿透部署
  • port hybrid pvid vlan vlan-id 概念及题目
  • 十大高端网站定制设计在线制作图片的软件
  • sentinel docker gateway k8s 集群 主从
  • 嘉兴高端网站定制进销存软件排行榜前十名
  • 一个wordpress的爱好者北京关键词优化平台
  • 第四部分:VTK常用类详解(第111章 vtkGlyph3D符号化类)
  • 联邦大型语言模型、多智能体大型语言模型是什么?
  • Apache Doris 入门与技术替代方案
  • Day31_【 NLP _1.文本预处理 _(1)文本处理的基本方法】
  • 网站服务器 内容更新linux主机做网站
  • 外贸网站主机选择十大网游人气排行榜
  • 3D 和 4D 世界建模:综述(上)
  • C++单头文件实现windows进程间通信(基于命名管道)
  • Apache Flink:流处理革命的领导者与新一代大数据计算引擎
  • YOLO入门教程(番外):深度学习概识
  • 如何在 Apache 中启用 HSTS 以增强网络安全性 ?
  • AI 基础知识二 神经网络概述
  • 点拓网站建设做爰的细节描述和过程网站
  • 外贸网站建设哪家有名网站建设技术包括哪些方面
  • 鸿蒙NEXT安全单元访问开发指南:构建可信应用的安全基石
  • 申请免费网站建设网址备案
  • 排序算法汇总,堆排序,归并排序,冒泡排序,插入排序
  • 第四部分:VTK常用类详解(第110章 vtkVolumeTextureMapper2D体绘制纹理映射器类)
  • 【Linux网络】Socket编程:UDP网络编程实现ChatServer
  • Context Compliance Attack:大模型安全的新兴威胁与防御策略
  • 如何通过限制网络访问来降低服务器被攻击的风险?
  • 吉林省建设部网站yy直播是干什么的
  • 13.stack容器和queue容器
  • 详解STL中stack_queue为什么选择deque作为默认容器