Захват масштабирования колесика мыши в OpenLayers

У меня есть карта в OpenLayers с несколькими слоями с маркерами. Каждый раз, когда пользователь масштабирует карту, я вызываю функцию, которая группирует перекрывающиеся маркеры. Это прекрасно работает при масштабировании с помощью обычных кнопок масштабирования, но я также хочу вызывать эту функцию, когда пользователь масштабирует изображение с помощью колесика мыши.

Думаю, мне нужно использовать OpenLayers.Handler.MouseWheel, чтобы зафиксировать это событие, но я не знаю, как это сделать. У кого-нибудь есть пример для этого?


person Maarten Janssen    schedule 15.08.2012    source источник


Ответы (2)


Вы должны использовать событие карты zoomend, которое срабатывает каждый раз, когда пользователь увеличивает или уменьшает масштаб, независимо от того, как пользователь это сделал (кнопки, двойной щелчок или прокрутка мыши).

Код должен выглядеть так:

map.events.on({ "zoomend": function(){
    //Do whatever you need to do here
}});
person igorti    schedule 15.08.2012
comment
Спасибо это то что я искал - person Maarten Janssen; 16.08.2012

Использование последней версии Openlayers v6.5.0. у меня сработало

this.map = new Map({
            controls: [],
            interactions: defaultInteractions({
                shiftDragZoom: false,
                doubleClickZoom: false,
                pinchRotate: false,
                mouseWheelZoom: false,
            }).extend([
                new MouseWheelZoom({
                    condition: platformModifierKeyOnly,
                    handleEvent: (event) => {
                        if (event.type !== "wheel") return;

                        if (event.originalEvent.deltaY <= -3) {
                            //mouse wheel up
                        } else {
                            //mouse wheel down
                        }
                    },
                }),
            ]),
            target: "map",
            layers,
        });
person jayson.centeno    schedule 16.04.2021