0008-web-cockpit-camera-controls.md 1.6 KB


status: accepted

Web cockpit camera controls

驾驶舱三维地图使用显式相机控制契约:

  • 鼠标左键拖拽:在三维场景中执行摄像机平移;拖拽方向映射为摄像机移动方向,不旋转、不缩放。
  • 鼠标右键拖拽:摄像机围绕“弹簧臂根部/旋转中心”做轨道旋转;旋转过程中不平移、不缩放。
  • 鼠标滚轮:只改变摄像机与旋转中心的距离,即弹簧臂长度;靠近或远离场景目标,不改变中心点,不旋转。
  • Cesium 默认左键旋转、滚轮缩放等行为 SHALL 被替换;相机控制应集中在地图服务层,而不是散落在页面组件中。

旋转中心(弹簧臂根部)的定义:

  • 选中监测点或设备时,中心是该对象的地表高程点(对象高程 + 0)。
  • 未选中任何对象时,中心是地面拾取点(屏幕中心对应的椭球/地形交点)。
  • 右键按下时锁定当时的中心,拖拽过程中不重新拾取。
  • 从无选中到选中时,镜头平滑飞向新中心并保持当前 heading 与 range,只换中心。
  • 取消选中不立即回退中心;左键平移才把中心更新为地面拾取点。

弹簧臂以 camera.lookAtTransform(中心东北天局部系, HeadingPitchRange) 表达,因此中心必须是局部地表点,不能是场景或城市原点。

地面/管线视图对相机的影响:管线视图压低弹簧臂、加大 pitch 并把 pitch 下限放宽到允许平视或轻微仰视,同时把管线图层提到可见、把地形与 3D Tiles 压成半透明。切换视图不重置旋转中心,也不新增第二套鼠标绑定。