在修改交互时取消监听事件并在监听后重新激活
un listen to event while modify-interaction and reactivate on listen after
我又在为 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){
//...
};
并且 active/reactive 它与:
unByKeyPopup = map.on('click', popupFunction);
我又在为 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){
//...
};
并且 active/reactive 它与:
unByKeyPopup = map.on('click', popupFunction);