From d47eb3453ff338113a855a039a4f7365832347eb Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Thu, 19 Jul 2012 00:28:49 +0200 Subject: [PATCH] Implement initial drag zoom control (shift + drag) --- src/ol/control/dragzoom.js | 52 ++++++++++++++++++++++++++++++++++++++ src/ol/ol.js | 1 + 2 files changed, 53 insertions(+) create mode 100644 src/ol/control/dragzoom.js diff --git a/src/ol/control/dragzoom.js b/src/ol/control/dragzoom.js new file mode 100644 index 0000000000..3b84146202 --- /dev/null +++ b/src/ol/control/dragzoom.js @@ -0,0 +1,52 @@ +// FIXME draw drag box + +goog.provide('ol.control.DragZoom'); + +goog.require('ol.Extent'); +goog.require('ol.MapBrowserEvent'); +goog.require('ol.control.Drag'); + + +/** + * @define {number} Hysterisis pixels. + */ +ol.DRAG_ZOOM_HYSTERESIS_PIXELS = 8; + + + +/** + * @constructor + * @extends {ol.control.Drag} + */ +ol.control.DragZoom = function() { + goog.base(this); +}; +goog.inherits(ol.control.DragZoom, ol.control.Drag); + + +/** + * @inheritDoc + */ +ol.control.DragZoom.prototype.handleDragEnd = function(mapBrowserEvent) { + if (this.deltaX * this.deltaX + this.deltaY * this.deltaY >= + ol.DRAG_ZOOM_HYSTERESIS_PIXELS * ol.DRAG_ZOOM_HYSTERESIS_PIXELS) { + var extent = ol.Extent.boundingExtent( + this.startCoordinate, + mapBrowserEvent.getCoordinate()); + mapBrowserEvent.map.fitExtent(extent); + } +}; + + +/** + * @inheritDoc + */ +ol.control.DragZoom.prototype.handleDragStart = function(mapBrowserEvent) { + var browserEventObject = mapBrowserEvent.getBrowserEventObject(); + if (browserEventObject.shiftKey) { + browserEventObject.preventDefault(); + return true; + } else { + return false; + } +}; diff --git a/src/ol/ol.js b/src/ol/ol.js index 16f2a34e7f..56fc39ea9a 100644 --- a/src/ol/ol.js +++ b/src/ol/ol.js @@ -27,6 +27,7 @@ goog.require('ol.TransformFunction'); goog.require('ol.control.DblClickZoom'); goog.require('ol.control.Drag'); goog.require('ol.control.DragPan'); +goog.require('ol.control.DragZoom'); goog.require('ol.control.MouseWheelZoom'); goog.require('ol.createMap'); goog.require('ol.dom');