typed objects for map events
This commit is contained in:
@@ -9,6 +9,9 @@
|
||||
|
||||
goog.provide('ol.handler.Click');
|
||||
|
||||
goog.require('ol.MapEvent');
|
||||
goog.require('ol.MapEventType');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.events.EventType');
|
||||
@@ -59,6 +62,7 @@ ol.handler.Click.prototype.disposeInternal = function() {
|
||||
ol.handler.Click.prototype.handleClick = function(e) {
|
||||
// do not emit a map click event after a drag
|
||||
if (!this.states_.dragged) {
|
||||
goog.events.dispatchEvent(this.map_, e);
|
||||
var newE = new ol.MapEvent(ol.MapEventType.CLICK, e);
|
||||
goog.events.dispatchEvent(this.map_, newE);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
|
||||
goog.provide('ol.handler.Drag');
|
||||
|
||||
goog.require('ol.MapEvent');
|
||||
goog.require('ol.MapEventType');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.events.Event');
|
||||
@@ -91,9 +94,7 @@ ol.handler.Drag.prototype.handleDragStart = function(e) {
|
||||
this.states_.dragged = false;
|
||||
this.prevX_ = e.clientX;
|
||||
this.prevY_ = e.clientY;
|
||||
var newE = {
|
||||
type: 'dragstart'
|
||||
};
|
||||
var newE = new ol.MapEvent(ol.MapEventType.DRAGSTART, e);
|
||||
goog.events.dispatchEvent(this.map_, newE);
|
||||
|
||||
// this is to prevent page scrolling
|
||||
@@ -109,11 +110,9 @@ ol.handler.Drag.prototype.handleDragStart = function(e) {
|
||||
*/
|
||||
ol.handler.Drag.prototype.handleDrag = function(e) {
|
||||
this.states_.dragged = true;
|
||||
var newE = {
|
||||
type: 'drag',
|
||||
deltaX: e.clientX - this.prevX_,
|
||||
deltaY: e.clientY - this.prevY_
|
||||
};
|
||||
var newE = new ol.MapEvent(ol.MapEventType.DRAG, e);
|
||||
newE.deltaX = e.clientX - this.prevX_;
|
||||
newE.deltaY = e.clientY - this.prevY_;
|
||||
this.prevX_ = e.clientX;
|
||||
this.prevY_ = e.clientY;
|
||||
var rt = goog.events.dispatchEvent(this.map_, newE);
|
||||
@@ -123,19 +122,19 @@ ol.handler.Drag.prototype.handleDrag = function(e) {
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {{type, deltaX, deltaY}} e
|
||||
* @param {ol.MapEvent} e
|
||||
*/
|
||||
ol.handler.Drag.prototype.defaultBehavior = function(e) {
|
||||
this.map_.moveByViewportPx(e.deltaX, e.deltaY);
|
||||
var deltaX = /** @type {number} */ e.deltaX;
|
||||
var deltaY = /** @type {number} */ e.deltaY;
|
||||
this.map_.moveByViewportPx(deltaX, deltaY);
|
||||
};
|
||||
|
||||
/**
|
||||
* @param {goog.fx.DragEvent} e
|
||||
*/
|
||||
ol.handler.Drag.prototype.handleDragEnd = function(e) {
|
||||
var newE = {
|
||||
type: 'dragend'
|
||||
};
|
||||
var newE = new ol.MapEvent(ol.MapEventType.DRAGEND, e);
|
||||
goog.events.dispatchEvent(this.map_, newE);
|
||||
goog.events.unlisten(this.elt_,
|
||||
[goog.events.EventType.TOUCHMOVE,
|
||||
|
||||
@@ -9,6 +9,9 @@
|
||||
|
||||
goog.provide('ol.handler.MouseWheel');
|
||||
|
||||
goog.require('ol.MapEvent');
|
||||
goog.require('ol.MapEventType');
|
||||
|
||||
goog.require('goog.asserts');
|
||||
goog.require('goog.events');
|
||||
goog.require('goog.style');
|
||||
@@ -51,8 +54,7 @@ goog.inherits(ol.handler.MouseWheel, goog.Disposable);
|
||||
* @param {goog.events.MouseWheelEvent} e
|
||||
*/
|
||||
ol.handler.MouseWheel.prototype.handleMouseWheel = function(e) {
|
||||
e.position = goog.style.getRelativePosition(e, this.elt_);
|
||||
e.type = 'mousewheel';
|
||||
var newE = new ol.MapEvent(ol.MapEventType.MOUSEWHEEL, e);
|
||||
var rt = goog.events.dispatchEvent(this.map_, e);
|
||||
if (rt) {
|
||||
this.defaultBehavior(e);
|
||||
@@ -73,7 +75,8 @@ ol.handler.MouseWheel.prototype.defaultBehavior = function(e) {
|
||||
|
||||
var map = me.map_,
|
||||
step = e.deltaY / Math.abs(e.deltaY);
|
||||
map.setZoom(map.getZoom() - step, e.position);
|
||||
map.setZoom(map.getZoom() - step,
|
||||
goog.style.getRelativePosition(e, this.elt_));
|
||||
|
||||
// We don't want the page to scroll.
|
||||
// (MouseWheelEvent is a BrowserEvent)
|
||||
|
||||
36
src/ol/mapevent.js
Normal file
36
src/ol/mapevent.js
Normal file
@@ -0,0 +1,36 @@
|
||||
goog.provide('ol.MapEvent');
|
||||
|
||||
goog.require('goog.events.Event');
|
||||
|
||||
/**
|
||||
* @constructor
|
||||
* @extends {goog.events.Event}
|
||||
* @param {string} type Event type.
|
||||
* @param {goog.events.Event} evt The wrapped event.
|
||||
*/
|
||||
ol.MapEvent = function(type, evt) {
|
||||
goog.base(this, type);
|
||||
|
||||
/**
|
||||
* X displacement relative to previous drag.
|
||||
*
|
||||
* @type {number|undefined}
|
||||
*/
|
||||
this.deltaX = undefined;
|
||||
|
||||
/**
|
||||
* Y displacement relative to previous drag.
|
||||
*
|
||||
* @type {number|undefined}
|
||||
*/
|
||||
this.deltaY = undefined;
|
||||
|
||||
/**
|
||||
* The browser event or closure event (e.g. goog.fx.DragEvent} wrapped
|
||||
* by this event.
|
||||
*
|
||||
* @type {goog.events.Event}
|
||||
*/
|
||||
this.event_ = evt;
|
||||
};
|
||||
goog.inherits(ol.MapEvent, goog.events.Event);
|
||||
17
src/ol/mapeventtype.js
Normal file
17
src/ol/mapeventtype.js
Normal file
@@ -0,0 +1,17 @@
|
||||
goog.provide('ol.MapEventType');
|
||||
|
||||
/**
|
||||
* @enum {string}
|
||||
*/
|
||||
ol.MapEventType = {
|
||||
// drag handler
|
||||
DRAGSTART: 'dragstart',
|
||||
DRAG: 'drag',
|
||||
DRAGEND: 'dragend',
|
||||
|
||||
// mousewheel handler
|
||||
MOUSEWHEEL: 'mousewheel',
|
||||
|
||||
// click handler
|
||||
CLICK: 'click'
|
||||
};
|
||||
Reference in New Issue
Block a user