Openlayers 5 - динамически меняющиеся взаимодействия - PullRequest
0 голосов
/ 04 марта 2019

Есть ли способ динамически изменять взаимодействия в Openlayers?Я устанавливаю взаимодействия

import {defaults as defaultInteractions} from 'ol/interaction.js';

var interactions = defaultInteractions({
       constrainResolution: true, 
       onFocusOnly: true, 
       doubleClickZoom: false, 
       altShiftDragRotate:false, 
       pinchRotate:false
    });

Но, скажем, я хочу иметь пользовательскую кнопку, где они могут включать (или переключаться) pinchRotate?Я пытался найти в этом вопросе тысячи разных способов и, похоже, не могу найти способ изменить взаимодействия после рендеринга карты.

1 Ответ

0 голосов
/ 04 марта 2019

Взаимодействия должны быть назначены именам переменных и добавлены в коллекцию по умолчанию, а не включены в значения по умолчанию.Установите их неактивными, если они вам не нужны немедленно.Затем ваша кнопка может переключать активные настройки взаимодействия.

var dragRotate = new DragRotate();
var pinchRotate = new PinchRotate();

var interactions = defaultInteractions({
       constrainResolution: true, 
       onFocusOnly: true, 
       doubleClickZoom: false, 
       altShiftDragRotate:false, 
       pinchRotate:false
    }).extend([dragRotate, pinchRotate]);

dragRotate.setActive(false);
pinchRotate.setActive(false);

myRotateButton.addEventListener('click', function() {
    // turn rotation on/off
    dragRotate.setActive(!dragRotate.getActive());
    pinchRotate.setActive(!pinchRotate.getActive());
}, false);
...