如何设置Cesium 3D地球最小缩放尺寸 限制鼠标缩小下限
Cesium 3D地球最小缩放限制实现方案
方案1:使用Cesium内置API(推荐)
直接修改屏幕空间相机控制器的maximumZoomDistance参数即可实现限制,不需要额外监听事件,性能最优,无卡顿跳动问题:
var viewer = new Cesium.Viewer("cesiumContainer", { animation: false, timeline: false }); // 配置最小缩放限制:设置相机最大拉远距离(单位:米),数值可按需调整 // 地球赤道半径约为6378137米,此处示例值10000000代表相机最远只能距离地表10000公里 viewer.scene.screenSpaceCameraController.maximumZoomDistance = 10000000; // 可选:额外配置最大缩放限制(避免相机太近穿入地表) // viewer.scene.screenSpaceCameraController.minimumZoomDistance = 1000;
方案2:自定义监听事件实现(适合需要自定义控制逻辑的场景)
如果需要更灵活的控制逻辑(比如不同视角下阈值不同),可以监听场景的preRender事件实时检测相机高度,超过阈值强制重置:
var viewer = new Cesium.Viewer("cesiumContainer", { animation: false, timeline: false }); // 自定义最小缩放对应的最大相机高度阈值(单位:米) const MAX_ALLOWED_HEIGHT = 10000000; viewer.scene.preRender.addEventListener(() => { const cameraHeight = viewer.camera.positionCartographic.height; if (cameraHeight > MAX_ALLOWED_HEIGHT) { const cartographic = Cesium.Cartographic.fromCartesian(viewer.camera.position); cartographic.height = MAX_ALLOWED_HEIGHT; viewer.camera.position = Cesium.Cartographic.toCartesian(cartographic); } });
数值调整说明
- 阈值越大,允许的最小地球尺寸越小
- 阈值越小,允许的最小地球尺寸越大
- 可以直接调试不同数值找到符合产品需求的效果
内容的提问来源于stack exchange,提问作者user3653474
相关产品推荐
相关产品推荐

