在修改交互时听取事件,在听取后重新激活

时间:2015-06-28 01:35:24

标签: 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 
  }
  ...
 });
 ...
}

嗯......这是最好的工作。我做错了什么?

谢谢

1 个答案:

答案 0 :(得分:1)

您正在尝试使用错误的方法,而是使用unByKey

map.unByKey(unByKeyPopup);

更新:

而不是:

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

创建一个能够完成工作的函数:

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

激活/反应它:

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