本文次要学习openlayers的Event模块相干源码
BaseEvent
Openlayers依据W3C DOM Level 2 Event接口简化实现了本人的事件类,它只提供了type
和target
属性以及preventDefault
和stopPropagation
办法。
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,};