我正在开发的网站上使用 Google Maps API v3。我的地图下方有一个下拉框,允许用户在地图上显示的不同标记组之间切换。每个标记都使用显示marker.setMap()
.
我的问题是地图有时需要很长时间才能显示新标记,尤其是在 IE 中。我想在地图切换标记时显示“加载”动画。但我不知道如何检测地图何时完成显示新数据(没有页面加载,因为这都是 AJAX)。是否有回调或事件侦听器setMap()
事件,这样我就可以在最后一个标记完成加载时调用一个函数来停止“加载”动画?
setMap() 似乎没有回调或事件监听器,但我找到了一种方法来完成我想要的。我正在使用 jQuery 加载 Google 地图。这是我的代码。
初始化地图时,我为“idle”事件设置了一个监听器,该事件隐藏了“loading”动画。每当地图在滚动或缩放更改后完成重绘时,就会触发“idle”事件:
google.maps.event.addListener(this.map, 'idle', function() {
$('#loading').hide();
});
在清除叠加层的函数中,我首先显示加载动画,然后使用 setMap(null) 清除每个标记。然后,我通过将经度更改为 0.000000001,稍微将地图居中。这发生在所有 setMap() 调用之后,并触发隐藏加载动画的“idle”事件。
// clear overlays from the map
function clearOverlays() {
$('#loading').show();
// clear the markers from the active data array
if (activeData) {
for (i in activeData) { activeData[i].setMap(null); }
}
activeData = '';
// very slightly recenter the map to trigger the 'idle' event
var centerlat = MYMAP.map.getCenter().lat();
var centerlng = MYMAP.map.getCenter().lng() + .000000001;
recenter = new google.maps.LatLng(centerlat, centerlng);
MYMAP.map.setCenter(recenter);
}
这有点像黑客,但我希望其他人发现这很有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)