gpt4 book ai didi

javascript - 如何在 OpenLayers 3 中删除监听器

转载 作者:数据小太阳 更新时间:2023-10-29 05:46:26 24 4
gpt4 key购买 nike

我做了一个 copy我在 stackoverflow 上的问题,因为在 gis.stackexchange 上,我所有的问题都没有引起任何注意——很多时候我无法在那里得到简单问题的答案。所以,我现在的问题是如何删除以这种方式定义的监听器:

map.getViewport().addEventListener('click', function (e){
console.log("clicked");
});

最佳答案

OL3 会发出您可以使用的自己的事件类型,并且为了回答您最初的问题,提供了一种简单快捷的方法来注销它们。

看这个例子:http://openlayers.org/en/v3.13.0/examples/vector-layer.html

更具体地说,在这些行:

  map.on('pointermove', function(evt) {
if (evt.dragging) {
return;
}
var pixel = map.getEventPixel(evt.originalEvent);
displayFeatureInfo(pixel);
});

map.on('click', function(evt) {
displayFeatureInfo(evt.pixel);
});

ol.Map 对象有一个 on 方法,您可以使用该方法在 ol3 map 浏览器事件上注册事件监听器。最好使用这些事件而不是标准的浏览器事件。在此处查看所有 map 浏览器事件的列表:http://openlayers.org/en/v3.13.0/apidoc/ol.MapBrowserEvent.html

注销,您可以:

a) 使用un 方法,但要确保您提供相同的回调方法 作为第二个参数。换句话说:

  var callback = function(evt) {
displayFeatureInfo(evt.pixel);
};
map.on('click', callback);
map.un('click', callback);

b) 另一种方法是使用我非常喜欢的ol.Observable.unByKey 方法。当调用 ononce 时,它返回一个引用该事件的键。然后您可以使用该键取消收听您的事件:

  var key = map.on('click', function(evt) {
displayFeatureInfo(evt.pixel);
});
ol.Observable.unByKey(key);

我发现 b) 更友好,因为您可以注册一堆事件监听器并将所有键放在一个数组中。当你想全部取消注册时,在数组中循环调用unByKey方法,然后清空数组。与必须手动注销所有事件相比,这种方式生成的代码更少。

关于javascript - 如何在 OpenLayers 3 中删除监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35015174/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com