diff --git a/src/ol/View.js b/src/ol/View.js index bbc373067a..27ab568daa 100644 --- a/src/ol/View.js +++ b/src/ol/View.js @@ -793,6 +793,13 @@ class View extends BaseObject { return this.constraints_; } + /** + * @return {boolean} Resolution constraint is set + */ + getConstrainResolution() { + return this.options_.constrainResolution; + } + /** * @param {Array=} opt_hints Destination array. * @return {Array} Hint. diff --git a/src/ol/interaction/MouseWheelZoom.js b/src/ol/interaction/MouseWheelZoom.js index 9ab143ee4d..f782af739d 100644 --- a/src/ol/interaction/MouseWheelZoom.js +++ b/src/ol/interaction/MouseWheelZoom.js @@ -212,8 +212,8 @@ class MouseWheelZoom extends Interaction { Mode.WHEEL; } - if (this.mode_ === Mode.TRACKPAD) { - const view = map.getView(); + const view = map.getView(); + if (this.mode_ === Mode.TRACKPAD && !view.getConstrainResolution()) { if (this.trackpadTimeoutId_) { clearTimeout(this.trackpadTimeoutId_); } else { @@ -248,9 +248,7 @@ class MouseWheelZoom extends Interaction { view.cancelAnimations(); } let delta = -clamp(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_; - const currentZoom = view.getZoom(); - const newZoom = view.getConstrainedZoom(currentZoom + delta); - if (currentZoom === newZoom) { + if (view.getConstrainResolution()) { // view has a zoom constraint, zoom by 1 delta = delta ? delta > 0 ? 1 : -1 : 0; }