首页 / Cesium / API 文档
ScreenSpaceCameraController
先看结论
把鼠标与触摸操作翻译成相机运动:拖动转地球、滚轮缩放、右键改俯仰。 禁用某种操作、限制缩放范围都改它。
scene.screenSpaceCameraController → Cesium.ScreenSpaceCameraController
实例由 Scene 在创建时一并建好,不单独 new。
通过 viewer.scene.screenSpaceCameraController 访问。
常用成员
| 成员 | 类型 | 默认 | 说明 |
|---|---|---|---|
enableInputs | boolean | true | 总开关,false 时所有鼠标操作失效 |
enableRotate | boolean | true | 左键拖动旋转地球 |
enableTranslate | boolean | true | 右键(或双指)平移 |
enableZoom | boolean | true | 滚轮与双指捏合缩放 |
enableTilt | boolean | true | 中键拖拽改变俯仰 |
enableLook | boolean | true | 自由视角(Shift + 拖动) |
enableCollisionDetection | boolean | true | 阻止相机穿进地形或地下 |
minimumZoomDistance | number | 1.0 | 相机距地表的最小距离,单位米 |
maximumZoomDistance | number | Infinity | 最大距离,默认不限制 |
inertiaSpin | number | 0.9 | 旋转惯性,0 表示松手即停 |
inertiaTranslate | number | 0.9 | 平移惯性 |
inertiaZoom | number | 0.8 | 缩放惯性 |
minimumCollisionTerrainHeight | number | 15000 | 低于该高度才启用碰撞检测,减少远视角开销 |
translateEventTypes / zoomEventTypes | Array | — | 自定义哪种输入触发平移、缩放,如 [Cesium.ScreenSpaceEventType.LEFT_DRAG] |
示例
var ctrl = viewer.scene.screenSpaceCameraController;
// 只允许缩放,其余操作全部关掉
ctrl.enableRotate = false;
ctrl.enableTranslate = false;
ctrl.enableTilt = false;
ctrl.enableLook = false;
// 缩放范围:最近 500 米,最远 2000 公里
ctrl.minimumZoomDistance = 500;
ctrl.maximumZoomDistance = 2000000;
// 去掉惯性,操作更「跟手」
ctrl.inertiaSpin = 0;
ctrl.inertiaTranslate = 0;
ctrl.inertiaZoom = 0;
// 做贴近地面的漫游时,关闭碰撞避免相机被地形弹开
ctrl.enableCollisionDetection = false;
注意事项
- 这些开关只影响相机操控,不会解绑自己注册的
ScreenSpaceEventHandler事件。 enableInputs = false是总开关,恢复时要重新置 true,单独打开子开关无效。minimumZoomDistance设得太小会穿入地下;开启碰撞检测时相机还会被地形顶住,无法贴到极近。- 二维模式下平移与缩放仍受这些开关控制,但旋转、俯仰本身不适用。
经纬志(2026)。《ScreenSpaceCameraController》。https://www.jingweizhi.com/cesium/api/screen-space-camera-controller.html(访问日期 2026-11-03)。