Javascript 在修改交互时取消侦听事件,并在侦听后重新激活
我又在为unByKey/ol.可观察的东西挣扎 我有一个用于创建弹出窗口的事件侦听器Javascript 在修改交互时取消侦听事件,并在侦听后重新激活,javascript,openlayers-3,Javascript,Openlayers 3,我又在为unByKey/ol.可观察的东西挣扎 我有一个用于创建弹出窗口的事件侦听器 var unByKeyPopup; unByKeyPopup = map.on('click', function (evt) { ... }); 然后我有一个修改交互,当复选框设置为true时,该交互被激活 function xyz() { .... $('#checkbox').on('click', function () { if(this.checked) { modify
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
}
...
});
...
}
嗯。。。这不管用。我做错了什么
谢谢您尝试的方法不正确,请改用: 更新: 而不是:
unByKeyPopup = map.on('click', function (evt) {
...
});
创建生成作业的函数:
var popupFunction = function(evt){
//...
};
和有功/无功it,包括:
unByKeyPopup = map.on('click', popupFunction);
好的,我有一个popop侦听器的解决方案。我在图层中添加了一个属性:
nopopup:true
并具有以下atm:unByKeyPopup=map.on('click',function(evt){function(feature,layer){if(layer.get('nopopup')!==true){…
它或多或少可以工作,但更优雅的是unByKey解决方案谢谢你,你是对的。但是我以后如何重新激活弹出窗口?我必须用ol.Observable做这件事吗?嗯。好的,这对我帮助很大。谢谢。我稍后会尝试理解为什么会这样。如果它缺少什么,请告诉我。不客气,可以接受正确的答案。
unByKeyPopup = map.on('click', popupFunction);