我正在将 Google 地图嵌入到我的网站中。加载 Google 地图后,我需要启动一些 JavaScript 进程。
有没有办法自动检测 Google 地图何时完全加载,包括图块下载等?
一个tilesloaded()
方法存在应该完成的正是这个任务,但它不工作。
我正在将 Google 地图嵌入到我的网站中。加载 Google 地图后,我需要启动一些 JavaScript 进程。
有没有办法自动检测 Google 地图何时完全加载,包括图块下载等?
一个tilesloaded()
方法存在应该完成的正是这个任务,但它不工作。
这让 GMaps v3 困扰了我一段时间。
我找到了一种方法来做到这一点:
google.maps.event.addListenerOnce(map, 'idle', function(){
// do something only the first time the map is loaded
});
当地图进入空闲状态时触发“空闲”事件 - 一切都已加载(或加载失败)。我发现它比 tileloaded/bounds_changed 更可靠,并且使用addListenerOnce
方法在第一次触发“空闲”时执行闭包中的代码,然后分离事件。
另请参阅Google 地图参考中的事件部分。
我正在创建 html5 移动应用程序,我注意到idle
,bounds_changed
和tilesloaded
事件在创建和呈现地图对象时触发(即使它不可见)。
为了使我的地图在第一次显示时运行代码,我执行了以下操作:
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
});
});
2018年:
var map = new google.maps.Map(...)
map.addListener('tilesloaded', function () { ... })
https://developers.google.com/maps/documentation/javascript/events
如果您使用的是 Maps API v3,这已经改变了。
在版本 3 中,您本质上希望为bounds_changed
事件设置一个侦听器,它将在地图加载时触发。一旦触发,请删除侦听器,因为您不希望每次视口边界更改时都收到通知。
随着 V3 API 的发展,这在未来可能会发生变化:-)
如果您使用的是web components,那么他们以这个为例:
map.addEventListener('google-map-ready', function(e) {
alert('Map loaded!');
});