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