--- status: accepted --- # Web cockpit camera controls 驾驶舱三维地图使用显式相机控制契约: - 鼠标左键拖拽:在三维场景中执行摄像机平移;拖拽方向映射为摄像机移动方向,不旋转、不缩放。 - 鼠标右键拖拽:摄像机围绕“弹簧臂根部/旋转中心”做轨道旋转;旋转过程中不平移、不缩放。 - 鼠标滚轮:只改变摄像机与旋转中心的距离,即弹簧臂长度;靠近或远离场景目标,不改变中心点,不旋转。 - Cesium 默认左键旋转、滚轮缩放等行为 SHALL 被替换;相机控制应集中在地图服务层,而不是散落在页面组件中。 旋转中心(弹簧臂根部)的定义: - 选中监测点或设备时,中心是该对象的**地表高程点**(对象高程 + 0)。 - 未选中任何对象时,中心是**地面拾取点**(屏幕中心对应的椭球/地形交点)。 - 右键按下时锁定当时的中心,拖拽过程中不重新拾取。 - 从无选中到选中时,镜头平滑飞向新中心并保持当前 heading 与 range,只换中心。 - 取消选中不立即回退中心;左键平移才把中心更新为地面拾取点。 弹簧臂以 `camera.lookAtTransform(中心东北天局部系, HeadingPitchRange)` 表达,因此中心必须是局部地表点,不能是场景或城市原点。 地面/管线视图对相机的影响:管线视图压低弹簧臂、加大 pitch 并把 pitch 下限放宽到允许平视或轻微仰视,同时把管线图层提到可见、把地形与 3D Tiles 压成半透明。切换视图不重置旋转中心,也不新增第二套鼠标绑定。