加载事件未在传单中触发

load event not firing in leaflet

我正在尝试在用户完成某些事件时在地图上执行业务逻辑。

I'm able to get working drag , dblclick and zoomstart events.

但是我没有触发加载事件。 (最初在浏览器加载时)

我的示例代码如下:

  var map = L.map('map').setView([34.7320,-86.5966], 14);

  map.on('load drag dblclick zoomstart', function() {      
         // My business logic goes here.
  });

here 开始,您可以使用活动

'idle'

而不是

'load'

这可以在您调用 setView 时完成,这会使地图触发加载事件。

var map = L.map('map').on('load', function(){
  // Your business logic here...
}).setView([34.7320,-86.5966], 14);

(或)

https://github.com/Leaflet/Leaflet/issues/3560

http://jsfiddle.net/QUGyr/1/

如果您只想在地图准备好后做点什么,请使用map.whenReady(fn)

map.whenReady(function(){
    console.log('Map Loaded!');
});

更长的解释: 我遇到了同样的问题(使用 LeafletJS 1.6 和 1.7.1),'idle' 和 'load' 不会触发,除非我在设置 setView 之前定义它。

通过源代码挖掘我发现还有 map.whenReady(function(){}); 对我有用,如果地图已经加载也可以。

所以代替:

map.on('load', function(){
    console.log('Map Loaded!');
});

使用:

map.whenReady(function(){
    console.log('Map Loaded!');
});