一些技术路线测试,增加git,方便代码还原
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
/**
 * 事件中心
 * 职责:集中管理 Cesium 的 ScreenSpaceEventHandler,支持创建、注销输入动作、销毁与相机旋转开关
 */
export class EventHub {
  /**
   * 构造函数
   * @param {Cesium.Viewer} viewer Cesium Viewer 实例
   */
  constructor(viewer) { this.viewer = viewer; this.handlers = new Map() }
 
  /**
   * 获取指定名称的事件处理器,不存在则创建
   * @param {string} name 处理器名称
   * @returns {Cesium.ScreenSpaceEventHandler} 处理器实例
   */
  get (name) { if (!this.handlers.has(name)) { this.handlers.set(name, new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas)) } return this.handlers.get(name) }
 
  /**
   * 注销指定处理器上的某类输入动作
   * @param {string} name 处理器名称
   * @param {Cesium.ScreenSpaceEventType} type 输入事件类型
   */
  off (name, type) { const h = this.get(name); h.removeInputAction(type) }
 
  /**
   * 销毁处理器并从内部缓存移除
   * @param {string} name 处理器名称
   */
  destroy (name) { const h = this.handlers.get(name); if (h) { h.destroy(); this.handlers.delete(name) } }
 
  /**
   * 开关相机旋转能力(鼠标拖动旋转)
   * @param {boolean} flag true 启用,false 禁用
   */
  enableRotate (flag) { this.viewer.scene.screenSpaceCameraController.enableRotate = !!flag }
}