Как ограничить уровни масштабирования колесика мыши указанными в View.resolutions? - PullRequest
0 голосов
/ 20 апреля 2020

Я хотел бы ограничить уровни масштабирования колесика мыши указанными в View.resolutions.

Что я могу сделать, чтобы добиться этого?

1 Ответ

0 голосов
/ 20 апреля 2020

Использовать constrainResolution: true в настройках просмотра

(c) Майк

РЕДАКТИРОВАТЬ : если вы хотите использовать constrainResolution только для масштабирования колесика мыши, поэтому вам необходимо переопределить функцию handleWheelZoom_ в прототипе MouseWheelZoom перед созданием карты:

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, поэтому вы можете включать и выключать ограничение. Вы можете отключить его перед настройкой зума вручную и включить его снова, если будут сделаны какие-либо дальнейшие изменения в разрешении

(c). Mike

См. Комментарии ниже

...