Zoom to the extent of the drag box

This commit is contained in:
Tim Schaub
2015-09-08 23:07:47 -06:00
parent d3a4fd115b
commit b7f199c8cd

View File

@@ -1,10 +1,11 @@
goog.provide('ol.interaction.DragZoom');
goog.require('goog.asserts');
goog.require('ol.animation');
goog.require('ol.easing');
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');
@@ -58,13 +59,35 @@ goog.inherits(ol.interaction.DragZoom, ol.interaction.DragBox);
*/
ol.interaction.DragZoom.prototype.onBoxEnd = function() {
var map = this.getMap();
var view = map.getView();
goog.asserts.assert(!goog.isNull(view), 'view should not be null');
var extent = this.getGeometry().getExtent();
var center = ol.extent.getCenter(extent);
var size = map.getSize();
goog.asserts.assert(goog.isDef(size), 'size should be defined');
ol.interaction.Interaction.zoom(map, view,
view.getResolutionForExtent(extent, size),
center, this.duration_);
var extent = this.getGeometry().getExtent();
var resolution = view.constrainResolution(
view.getResolutionForExtent(extent, size));
var currentResolution = view.getResolution();
goog.asserts.assert(goog.isDef(currentResolution), 'res should be defined');
var currentCenter = view.getCenter();
goog.asserts.assert(goog.isDef(currentCenter), 'center should be defined');
map.beforeRender(ol.animation.zoom({
resolution: currentResolution,
duration: this.duration_,
easing: ol.easing.easeOut
}));
map.beforeRender(ol.animation.pan({
source: currentCenter,
duration: this.duration_,
easing: ol.easing.easeOut
}));
view.setCenter(ol.extent.getCenter(extent));
view.setResolution(resolution);
};