似乎没有setMap()的回调或事件监听器,但我想出了一种方法来完成我想要的。我使用jQuery加载Google Map。这是我的代码。
初始化地图时,我为'空闲'事件设置了一个侦听器,隐藏了“加载”动画。每当地图完成滚动或缩放变化后重绘时,会触发“空闲”事件:
google.maps.event.addListener(this.map, 'idle', function() {
$('#loading').hide();
});
在我的函数来清除覆盖,我第一次显示加载动画,然后使用的setMap清除每个标记(空)。然后,我通过以.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);
}
这是一个黑客,但我希望别人认为这有用。
是的,我发现这个有用 – 2011-08-27 06:26:24
我试图similir的事情来实现。我在“空闲”开始时创建预加载器,然后渲染标记群集器,并且当所有群集和市场都设置为映射时,我隐藏预加载器。但它没有按预期工作。 Preloader没有显示(在DOM中是的,但是很快就消失了,而不是CSS)。你的黑客拯救了我的一天。 – exoslav 2017-06-09 16:47:11