首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将鼠标滚轮的缩放级别限制为View.resolutions中指定的缩放级别?

如何将鼠标滚轮的缩放级别限制为View.resolutions中指定的缩放级别?
EN

Stack Overflow用户
提问于 2020-04-20 15:32:41
回答 1查看 150关注 0票数 0

我想将鼠标滚轮的缩放级别限制在View.resolutions中指定的级别。

我能做些什么来实现它?

EN

回答 1

Stack Overflow用户

发布于 2020-04-20 19:51:19

(c) Mike

编辑:如果您只想使用constrainResolution进行鼠标滚轮缩放,那么您应该在创建地图之前覆盖prototype _MouseWheelZoom中的_handleWheelZoom_函数:

代码语言:javascript
复制
import { clamp } from 'ol/math.js';
import { zoomByDelta } from 'ol/interaction/Interaction';
import { MouseWheelZoom } from "ol/interaction";

const mouseWheelZoomContrainResolution = true;

MouseWheelZoom.prototype.handleWheelZoom_ = function (map) {
    var view = map.getView();
    if (view.getAnimating()) {
        view.cancelAnimations();
    }
    var delta = -clamp(this.totalDelta_, -this.maxDelta_ * this.deltaPerZoom_, this.maxDelta_ * this.deltaPerZoom_) / this.deltaPerZoom_;
    if (view.getConstrainResolution() || mouseWheelZoomContrainResolution) {
        // view has a zoom constraint, zoom by 1
        delta = delta ? delta > 0 ? 1 : -1 : 0;
    }
    zoomByDelta(view, delta, this.lastAnchor_, this.duration_);
    this.mode_ = undefined;
    this.totalDelta_ = 0;
    this.lastAnchor_ = null;
    this.startTime_ = undefined;
    this.timeoutId_ = undefined;
};

EDIT2

视图有一个setConstrainResolution方法,因此您可以打开和关闭约束。您可以在手动设置缩放之前将其关闭,如果对分辨率进行了进一步更改,则可以将其重新打开

请参阅下面的评论

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61317229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档