javascript - 修改交互时取消监听事件并在监听后重新激活

标签 javascript openlayers-3

我再次为 unByKey/ol.Observable 的东西而苦苦挣扎......

我有一个用于创建弹出窗口的事件监听器。

var unByKeyPopup;
unByKeyPopup = map.on('click', function (evt) {
  ...
});

然后我有一个修改交互,当复选框设置为 true 时,该交互会被激活。

 function xyz() {
  ....

 $('#checkbox').on('click', function () {
  if(this.checked) {
    modifyVectorInteraction();
    $('#checkbox').un('click', unByKeyPopup);  //????? dont activate the Popup thing while the user is in modify interaction
  } if(!this.checked) {
    map.removeInteraction(modifyinteraction);  
    $('#checkbox').on('click', unByKeyPopup);  //????? ok, modify done, lets re-activate the Popup 
  }
  ...
 });
 ...
}

嗯...这确实有效。我做错了什么?

谢谢

最佳答案

您尝试使用错误的方法,请使用 unByKey相反:

map.unByKey(unByKeyPopup);

更新:

而不是:

unByKeyPopup = map.on('click', function (evt) {
  ...
});

创建一个完成这项工作的函数:

var popupFunction = function(evt){
    //...
};

并通过以下方式激活/ react 它:

unByKeyPopup = map.on('click', popupFunction);

关于javascript - 修改交互时取消监听事件并在监听后重新激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31095313/

相关文章:

javascript - CHART.js 散点图中 x 轴的非数字

javascript - getElementsByName ("secilenil")[0] 是什么意思?

javascript - BNG 中的 Open Layers 3 鼠标位置检测不起作用

javascript - 如何将样式应用于 OpenLayers 3 中的修改交互?

javascript - 将事件处理程序添加到 OpenLayers 3 中的功能?

javascript - 开放层 3 : Trying to add image underlay to a vector layer

第二次提交时忽略 Javascript PreventDefault()

javascript - 使用 $.get 后变量最终未定义

javascript - React Native 中显示 Activity 指示器时如何锁定所有屏幕的触摸?

javascript - 如何偏移 ol.style.Circle 或 ol.style.RegularShape?