Openlayers 5-动态更改交互

时间:2019-03-04 19:34:06

标签: openlayers-5

有没有办法动态改变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 :(得分:0)

需要将交互分配给变量名并添加到默认集合中,而不是包含在默认值中。如果您不需要立即将它们设置为非活动状态。然后,您的按钮可以切换交互活动设置。

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);