diff --git a/src/ol/interaction/dragzoominteraction.js b/src/ol/interaction/dragzoominteraction.js index ccb909d10c..b6bd06b543 100644 --- a/src/ol/interaction/dragzoominteraction.js +++ b/src/ol/interaction/dragzoominteraction.js @@ -2,11 +2,19 @@ goog.provide('ol.interaction.DragZoom'); goog.require('goog.asserts'); goog.require('ol.events.condition'); +goog.require('ol.extent'); goog.require('ol.interaction.DragBox'); +goog.require('ol.interaction.Interaction'); goog.require('ol.style.Stroke'); goog.require('ol.style.Style'); +/** + * @define {number} Timeout duration. + */ +ol.interaction.DRAGZOOM_ANIMATION_DURATION = 200; + + /** * Allows the user to zoom the map by clicking and dragging on the map, @@ -47,10 +55,12 @@ goog.inherits(ol.interaction.DragZoom, ol.interaction.DragBox); * @inheritDoc */ ol.interaction.DragZoom.prototype.onBoxEnd = function() { - this.getMap().withFrozenRendering(goog.bind(function() { - // FIXME works for View2D only - var view = this.getMap().getView().getView2D(); - - view.fitExtent(this.getGeometry().getExtent(), this.getMap().getSize()); - }, this)); + // FIXME works for View2D only + var map = this.getMap(); + var view = map.getView().getView2D(); + var extent = this.getGeometry().getExtent(); + var center = ol.extent.getCenter(extent); + ol.interaction.Interaction.zoom(map, view, + view.getResolutionForExtent(extent, map.getSize()), + center, ol.interaction.DRAGZOOM_ANIMATION_DURATION); };