我正在将Google Maps嵌入我的网站。加载Google Maps之后,我需要启动一些JavaScript流程。
有没有一种方法可以自动检测Google Maps何时完全加载,包括磁贴下载和全部加载?
tilesloaded()
存在一种方法可以完全完成该任务,但不起作用。
google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
我正在将Google Maps嵌入我的网站。加载Google Maps之后,我需要启动一些JavaScript流程。
有没有一种方法可以自动检测Google Maps何时完全加载,包括磁贴下载和全部加载?
tilesloaded()
存在一种方法可以完全完成该任务,但不起作用。
google.maps.event.addListenerOnce(map, 'tilesloaded', function() {
Answers:
使用GMaps v3困扰了我一段时间。
我找到了这样的方法:
google.maps.event.addListenerOnce(map, 'idle', function(){
// do something only the first time the map is loaded
});
当地图进入空闲状态时-加载了所有内容(或加载失败),就会触发“空闲”事件。我发现它比tilesloaded / bounds_changed更可靠,并使用该addListenerOnce
方法在第一次触发“ idle”并随后分离事件时执行闭包中的代码。
另请参阅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
});
});
Uncaught ReferenceError: map is not defined
。我尝试延迟运行脚本并在其他脚本结束时运行,但似乎无济于事。
在2018年:
var map = new google.maps.Map(...)
map.addListener('tilesloaded', function () { ... })
https://developers.google.com/maps/documentation/javascript/events
GMap2::tilesloaded()
将是您正在寻找的事件。
有关参考,请参见GMap2.tilesloaded。
就我而言,tilesloaded
在渲染图像之前触发了从远程url和event 加载的Tile Image 。
我用以下肮脏的方法解决了。
var tileCount = 0;
var options = {
getTileUrl: function(coord, zoom) {
tileCount++;
return "http://posnic.com/tiles/?param"+coord;
},
tileSize: new google.maps.Size(256, 256),
opacity: 0.5,
isPng: true
};
var MT = new google.maps.ImageMapType(options);
map.overlayMapTypes.setAt(0, MT);
google.maps.event.addListenerOnce(map, 'tilesloaded', function(){
var checkExist = setInterval(function() {
if ($('#map_canvas > div > div > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(2) > div > div').length === tileCount) {
callyourmethod();
clearInterval(checkExist);
}
}, 100); // check every 100ms
});
您可以GMap2.isLoaded()
每n
毫秒检查一次此方法,以查看地图及其所有图块是否已加载(window.setTimeout()
或者window.setInterval()
是您的朋友)。
尽管这不会给您确切的加载完成事件,但足以触发Javascript。