经纬志
首页 / Cesium / API 文档

ScreenSpaceCameraController

先看结论

把鼠标与触摸操作翻译成相机运动:拖动转地球、滚轮缩放、右键改俯仰。 禁用某种操作、限制缩放范围都改它。

最后验证 2026-11-03 · CesiumJS 1.121 · 更新 2026-10-28 · 引用本文
scene.screenSpaceCameraController → Cesium.ScreenSpaceCameraController

实例由 Scene 在创建时一并建好,不单独 new。 通过 viewer.scene.screenSpaceCameraController 访问。

常用成员

成员类型默认说明
enableInputsbooleantrue总开关,false 时所有鼠标操作失效
enableRotatebooleantrue左键拖动旋转地球
enableTranslatebooleantrue右键(或双指)平移
enableZoombooleantrue滚轮与双指捏合缩放
enableTiltbooleantrue中键拖拽改变俯仰
enableLookbooleantrue自由视角(Shift + 拖动)
enableCollisionDetectionbooleantrue阻止相机穿进地形或地下
minimumZoomDistancenumber1.0相机距地表的最小距离,单位米
maximumZoomDistancenumberInfinity最大距离,默认不限制
inertiaSpinnumber0.9旋转惯性,0 表示松手即停
inertiaTranslatenumber0.9平移惯性
inertiaZoomnumber0.8缩放惯性
minimumCollisionTerrainHeightnumber15000低于该高度才启用碰撞检测,减少远视角开销
translateEventTypes / zoomEventTypesArray—自定义哪种输入触发平移、缩放,如 [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)。