如何检查Google地图是否已满载?

288 html javascript google-maps

我正在将Google地图嵌入我的网站.加载Google地图后,我需要启动一些JavaScript流程.

有没有办法在Google地图完全加载时自动检测,包括平铺下载等等?

tilesloaded()应该存在一种方法,它应该完成这项任务,但它不起作用.

ddi*_*hev 599

GMaps v3让我困扰了一段时间.

我找到了这样做的方法:

google.maps.event.addListenerOnce(map, 'idle', function(){
    // do something only the first time the map is loaded
});
Run Code Online (Sandbox Code Playgroud)

当地图进入空闲状态时会触发"空闲"事件 - 所有内容都已加载(或无法加载).我发现它比tilesload/bounds_changed更可靠,并且使用addListenerOnce方法,闭包中的代码在第一次触发"idle"时执行,然后事件被分离.

另请参阅Google地图参考中的事件部分.

  • -1:比加载/显示切片更早触发. (14认同)
  • 当地图进入空闲状态时会被触发(不会再加载).有时候可能会有一些因为连接不良而没有加载的磁贴,所以即使有这样的缺失部分,也会在最后触发空闲事件.如果您需要确保地图完整,没有丢失的瓷砖等,您应该寻求其他方式(例如"tilesloaded"事件). (13认同)
  • 它对我不起作用..在我的地图上显示任何内容之前触发 (13认同)
  • -1:对于我在chrome和firefox中,一旦脚本加载但在任何图块显示之前它会一直触发.也许它在快速连接上并不明显,但我很幸运,速度非常慢.'tilesloaded'似乎有效. (10认同)
  • 感谢您的解决方案 - 我认为这正是我所需要的。我根本无法理解的是,为什么谷歌根本没有放入一个简单的准备好的钩子?:-O (2认同)

小智 55

我创建HTML5的移动应用和我注意到idle,bounds_changedtilesloaded事件触发创建和渲染(即使它是不可见的)地图对象时.

为了使我的地图在第一次显示时运行代码,我执行了以下操作:

google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
    //this part runs when the mapobject is created and rendered
    google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
        //this part runs when the mapobject shown for the first time
    });
});
Run Code Online (Sandbox Code Playgroud)

  • 第一个tileloaded函数适合我,但第二个tileloaded函数永远不会为我运行. (4认同)

tim*_*mbo 15

如果您使用的是Maps API v3,则会发生变化.

在版本3中,您基本上想要为bounds_changed事件设置一个侦听器,该侦听器将在映射加载时触发.触发后,删除侦听器,因为每次视口边界更改时都不希望被通知.

随着V3 API的发展,这可能会在未来发生变化:-)

  • 我找不到像找到`tilesloaded`事件一样可靠的工作. (2认同)

Phi*_*enn 9

如果您正在使用Web组件,那么他们将此作为示例:

map.addEventListener('google-map-ready', function(e) {
   alert('Map loaded!');
});
Run Code Online (Sandbox Code Playgroud)

  • 可怕的评论,它在很多层面上的错误都不知道从哪里开始. (3认同)
  • 但为什么使用与谷歌地图不同的框架提供解决方案呢? (3认同)
  • 哈哈哈哈@晚上 (2认同)

haf*_*fla 8

在2018年:

var map = new google.maps.Map(...)
map.addListener('tilesloaded', function () { ... })
Run Code Online (Sandbox Code Playgroud)

https://developers.google.com/maps/documentation/javascript/events


Ada*_*itz 5

GMap2::tilesloaded() 将是您正在寻找的事件。

请参阅GMap2.tilesloaded以获取参考。