Leaflet地图中等效于Google地图“idle”事件的事件

6

我似乎找不到Leaflet中与Google Map的"idle"事件相等的地图事件。

Google Map事件"idle"的定义是"在平移或缩放后,地图变为空闲状态时触发此事件。"

https://developers.google.com/maps/documentation/javascript/reference#Map

我尝试使用Leaflet的"viewreset"、“load”、“blur”、“focused”、“moveend”,但它们与Google Map的"idle"非常不同。

  • "viewreset":仅在完成放大/缩小时执行,而不是在初始和平移后执行。
  • "load":仅在初始化时执行。
  • "moveend":仅当平移和缩放时执行,而不是初始化。

我能做的最好的事情就是使用这个。

var foo = function(e){
   console.log('Hello');
}
map.on('load', foo);
map.on('moveend', foo);

我只是想弄清楚是否我在阅读手册时出现了误解。即使没有类似于Google地图的“空闲”事件的等价物,是否有更好的方法来实现它?


1
你到底想做什么?你说的没错,没有内置的“空闲”事件,但我相信你可以在没有它的情况下触发你的逻辑。 - Ju66ernaut
1
我只是想弄清楚我是否错误地阅读了手册。即使没有类似于Google Map的“idle”的事件等效,是否有更好的实现方式。 - Petra Barus
1
然而,当有人试图将他们的Google地图移植到Leaflet,并且搜索关于“空闲”事件的等效内容时,他们可以在这里找到它。 - Petra Barus
1个回答

6
Leaflet库中没有“空闲”事件,尽管该描述似乎类似于“moveend”(没有关于地图初始化的内容)。正如您自己发现的那样,您可以使用“load”和“moveend”事件。为了捕获这两个事件,您不需要两次调用 map.on:可以将事件合并为一个字符串。
map.on('load moveend', function(e) { ... });

这个问题在于moveend可能会被过度调用,从而导致不必要的渲染。是否有一个插件可以添加类似空闲的功能,否则就需要进行去抖动处理。 - Nick
1
@Nick,关于需要空闲的问题已经记录在这里(https://github.com/Leaflet/Leaflet/issues/3178)。 - user1116573

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接