我很难理解如何在设置地图后停止事件侦听器。这里还有另外两个类似的问题,但经过努力我无法让它为我工作。
我设置事件监听器的代码很简单:
map.on("move", function() {
console.log("foo");
}
})
如何才能随意停止呢?我已经尝试过
map.off('move');
但这对我不起作用。我还查看了 mapbox 文档 的文档,但也没有运气。
文档显示我两者都需要:
但是,我不知道我应该使用什么作为listener。 (这就是为什么我只能尝试
map.off('move');
)。
在这种情况下如何正确设置 .off() ?
像这样使用它:
const myfunc = () => console.log('foo');
map.on('move', myfunc);
map.off('move', myfunc);
您需要使用静态函数或将箭头函数分配给变量,以便能够使用完全相同的函数调用
off
。
与接受的答案一样,您确实需要使用静态或箭头函数变量才能稍后删除事件侦听器。我们使用删除函数以及事件名称和相关函数的数组。
map.on("mousemove", singleSelect);
// Add to queue for later removal
window.mapEventListeners.push({eventName: "mousemove", functionName: singleSelect});
去除功能:
function removeCurrentMapEventListeners() {
window.mapEventListeners.forEach((listenerInfo) => {
districtingMap.off(listenerInfo.eventName, listenerInfo.functionName);
});
// reset
window.mapEventListeners = [];
// Also for DOM event listeners
window.removeEventListener("keydown", handleAltKeyDown);
}