我正在将Google Map 嵌入到我的网站中 . 加载Google Map 后,我需要启动一些JavaScript流程 .
Is there a way to auto-detect when Google Maps has fully loaded, including tile downloads and all?
存在 tilesloaded()
方法,该方法应该完成此任务,但it does not work .
我正在将Google Map 嵌入到我的网站中 . 加载Google Map 后,我需要启动一些JavaScript流程 .
Is there a way to auto-detect when Google Maps has fully loaded, including tile downloads and all?
存在 tilesloaded()
方法,该方法应该完成此任务,但it does not work .
9 回答
如果您正在使用web components,那么他们将此作为示例:
GMap2::tilesloaded()
将是您正在寻找的活动 .有关参考,请参阅GMap2.tilesloaded .
2018年:
https://developers.google.com/maps/documentation/javascript/events
变量
map
是GMap2类型的对象:就我而言,在渲染图像之前触发了从远程URL加载的Tile Image和
tilesloaded
事件 .我用下面的方式解决了 .
您可以每隔
n
毫秒检查GMap2.isLoaded()
方法,以查看是否已加载 Map 及其所有图块(window.setTimeout()
或window.setInterval()
是您的朋友) .虽然这不会为您提供加载完成的确切事件,但它应该足以触发您的Javascript .
这对GMaps v3来说困扰了一段时间 .
我找到了这样做的方法:
当 Map 进入空闲状态时会触发"idle"事件 - 所有内容都已加载(或无法加载) . 我发现它比tilesload / bounds_changed更可靠,并且使用
addListenerOnce
方法,闭包中的代码在第一次触发"idle"时执行,然后事件被分离 .另请参阅Google Map 参考中的events section .
我正在创建html5移动应用程序,我注意到
idle
,bounds_changed
和tilesloaded
事件在创建和渲染 Map 对象时触发(即使它不可见) .为了使我的 Map 在第一次显示时运行代码,我执行了以下操作:
如果您使用的是Maps API v3,则会发生变化 .
在版本3中,您基本上想要为
bounds_changed
事件设置一个侦听器,该事件将在映射加载时触发 . 触发后,删除侦听器,因为每次视口边界更改时都不希望被通知 .随着V3 API的发展,这可能会在未来发生变化:-)