/**
|
* 事件中心
|
* 职责:集中管理 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 }
|
}
|