有没有办法动态改变Openlayers中的交互?我设置了互动
import {defaults as defaultInteractions} from 'ol/interaction.js';
var interactions = defaultInteractions({
constrainResolution: true,
onFocusOnly: true,
doubleClickZoom: false,
altShiftDragRotate:false,
pinchRotate:false
});
但是假设我要有一个用户按钮,他们可以在其中打开(或在它们之间切换)pinchRotate?我尝试过以千种不同的方式搜索此问题,但似乎找不到在渲染地图后如何修改交互的功能。
答案 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);