本文次要学习openlayers的Event模块相干源码

BaseEvent

Openlayers依据W3C DOM Level 2 Event接口简化实现了本人的事件类,它只提供了typetarget属性以及preventDefaultstopPropagation办法。

class BaseEvent {  /**   * @param {string} type Type.   */  constructor(type) {    /**     * @type {boolean}     */    this.propagationStopped;    /**     * @type {boolean}     */    this.defaultPrevented;    /**     * The event type.     * @type {string}     * @api     */    this.type = type;    /**     * The event target.     * @type {Object}     * @api     */    this.target = null;  }  /**   * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events   * will be fired.   * @api   */  preventDefault() {    this.defaultPrevented = true;  }  /**   * Stop event propagation.   * @api   */  stopPropagation() {    this.propagationStopped = true;  }}

EventType

EventType对象保留了所有触发地图事件的事件名称。

/** * @enum {string} * @const */export default {  /**   * Generic change event. Triggered when the revision counter is increased.   * @event module:ol/events/Event~BaseEvent#change   * @api   */  CHANGE: 'change',  /**   * Generic error event. Triggered when an error occurs.   * @event module:ol/events/Event~BaseEvent#error   * @api   */  ERROR: 'error',  BLUR: 'blur',  CLEAR: 'clear',  CONTEXTMENU: 'contextmenu',  CLICK: 'click',  DBLCLICK: 'dblclick',  DRAGENTER: 'dragenter',  DRAGOVER: 'dragover',  DROP: 'drop',  FOCUS: 'focus',  KEYDOWN: 'keydown',  KEYPRESS: 'keypress',  LOAD: 'load',  RESIZE: 'resize',  TOUCHMOVE: 'touchmove',  WHEEL: 'wheel',};

KeyCode

KeyCode对象只记录了上下左右键盘方向键的keycode,便于事件监听。

export default {  LEFT: 37,  UP: 38,  RIGHT: 39,  DOWN: 40,};