From d713c9fea69aaa7a86771bb2d68209ee107c618f Mon Sep 17 00:00:00 2001 From: Tim Schaub Date: Fri, 3 Feb 2017 12:56:03 -0700 Subject: [PATCH] Disallow pinch zooming beyond min/max resolution --- src/ol/interaction/pinchzoom.js | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/ol/interaction/pinchzoom.js b/src/ol/interaction/pinchzoom.js index 3d42390f2e..68409d3124 100644 --- a/src/ol/interaction/pinchzoom.js +++ b/src/ol/interaction/pinchzoom.js @@ -81,13 +81,25 @@ ol.interaction.PinchZoom.handleDragEvent_ = function(mapBrowserEvent) { scaleDelta = this.lastDistance_ / distance; } this.lastDistance_ = distance; - if (scaleDelta != 1.0) { - this.lastScaleDelta_ = scaleDelta; - } + var map = mapBrowserEvent.map; var view = map.getView(); var resolution = view.getResolution(); + var maxResolution = view.getMaxResolution(); + var minResolution = view.getMinResolution(); + var newResolution = resolution * scaleDelta; + if (newResolution > maxResolution) { + scaleDelta = maxResolution / resolution; + newResolution = maxResolution; + } else if (newResolution < minResolution) { + scaleDelta = minResolution / resolution; + newResolution = minResolution; + } + + if (scaleDelta != 1.0) { + this.lastScaleDelta_ = scaleDelta; + } // scale anchor point. var viewportPosition = map.getViewport().getBoundingClientRect(); @@ -98,8 +110,7 @@ ol.interaction.PinchZoom.handleDragEvent_ = function(mapBrowserEvent) { // scale, bypass the resolution constraint map.render(); - ol.interaction.Interaction.zoomWithoutConstraints( - view, resolution * scaleDelta, this.anchor_); + ol.interaction.Interaction.zoomWithoutConstraints(view, newResolution, this.anchor_); };