From 3e34013c09fd050ceab319fd1ca831a8db93a669 Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Fri, 28 Sep 2012 11:42:08 +0200 Subject: [PATCH] Separating out method to get pixel offset --- src/ol/mapbrowserevent.js | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/ol/mapbrowserevent.js b/src/ol/mapbrowserevent.js index e4c56637b2..9b2f32af1c 100644 --- a/src/ol/mapbrowserevent.js +++ b/src/ol/mapbrowserevent.js @@ -36,6 +36,12 @@ ol.MapBrowserEvent = function(type, map, browserEvent) { */ this.coordinate_ = undefined; + /** + * @private + * @type {ol.Pixel} + */ + this.pixel_ = null; + }; goog.inherits(ol.MapBrowserEvent, ol.MapEvent); @@ -47,15 +53,27 @@ ol.MapBrowserEvent.prototype.getCoordinate = function() { if (goog.isDef(this.coordinate_)) { return this.coordinate_; } else { + var pixel = this.getPixel(); + var coordinate = this.map.getCoordinateFromPixel(pixel); + this.coordinate_ = coordinate; + return coordinate; + } +}; + + +/** + * Get pixel offset of the event from the top-left corner of the map viewport. + * @return {ol.Pixel} Pixel offset. + */ +ol.MapBrowserEvent.prototype.getPixel = function() { + if (goog.isNull(this.pixel_)) { var map = this.map; var browserEvent = this.browserEvent; var eventPosition = goog.style.getRelativePosition( browserEvent, map.getViewport()); - var pixel = new ol.Pixel(eventPosition.x, eventPosition.y); - var coordinate = map.getCoordinateFromPixel(pixel); - this.coordinate_ = coordinate; - return coordinate; + this.pixel_ = new ol.Pixel(eventPosition.x, eventPosition.y); } + return this.pixel_; };