utils/Events.js

import { Cesium } from '../../namespace'

/**
 * 地图鼠标事件类
 * @class
 */
class HandlerEvent {
  /**
   * 构造函数
   * @param {Object} viewer 地图场景对象
   */
  constructor(viewer) {
    this._handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas)
  }
  /**
   * 左键摁下事件
   * @param {MouseClickEvent} callback - 回调函数
   */
  onLeftDown(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.LEFT_DOWN)
  }
  /**
   * 左键抬起事件
   * @param {MouseClickEvent} callback - 回调函数
   */
  onLeftUp(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.LEFT_UP)
  }
  /**
   * 左键点击事件
   * @param {MouseClickEvent} callback - 回调函数
   */
  onLeftClick(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.LEFT_CLICK)
  }
  /**
   * 左键双击事件
   * @param {MouseClickEvent} callback - 回调函数
   */
  onLeftDoubleClick(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK)
  }
  /**
   * 右键摁下事件
   * @param {MouseClickEvent} callback - 回调函数
   */
  onRightDown(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.RIGHT_DOWN)
  }
  /**
   * 左键抬起事件
   * @param {MouseClickEvent} callback - 回调函数
   */
  onRightUp(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.RIGHT_UP)
  }
  /**
   * 右键点击事件
   * @param {MouseClickEvent} callback - 回调函数
   */
  onRightClick(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.RIGHT_CLICK)
  }
  /**
   * 中键点击事件
   * @param {MouseClickEvent} callback - 回调函数
   */
  onMiddleClick(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.MIDDLE_CLICK)
  }
  /**
   * 滚轮滚动事件
   * @param {MouseWheelEvent} callback - 回调函数
   */
  onWheel(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.WHEEL)
  }
  /**
   * 鼠标移动事件
   * @param {MouseMoveEvent} callback - 回调函数
   */
  onMove(callback) {
    this._handler.setInputAction((event) => {
      this._callback(callback) && callback(event)
    }, Cesium.ScreenSpaceEventType.MOUSE_MOVE)
  }

  _callback(callback) {
    return callback && typeof callback === 'function'
  }

  /**
   * 注销鼠标事件
   */
  destroy() {
    this._handler.destroy()
  }
}
export default HandlerEvent