gpt4 book ai didi

javascript - 谷歌地图 API v3 : Is there a callback or event listener for a setMap() event?

转载 作者:可可西里 更新时间:2023-11-01 01:49:52 25 4
gpt4 key购买 nike

我正在开发的网站上使用 Google Maps API v3。我的 map 下方有一个下拉框,允许用户在 map 上显示的不同标记集之间切换。每个标记都使用 marker.setMap() 显示。

我的问题是 map 有时需要很长时间才能显示新标记,尤其是在 IE 中。我想在 map 切换标记时显示“正在加载”动画。但我不知道如何检测 map 何时完成显示新数据(没有页面加载,因为这都是 AJAX)。 setMap() 事件是否有回调或事件监听器,以便我可以在最后一个标记完成加载时调用一个函数来停止“正在加载”动画?

最佳答案

setMap() 似乎没有回调或事件监听器,但我想出了一种方法来完成我想要的。我正在使用 jQuery 加载 Google map 。这是我的代码。

初始化 map 时,我为“空闲”事件设置了一个监听器,它隐藏了“正在加载”动画。只要 map 在滚动或缩放更改后完成重绘,就会触发“空闲”事件:

google.maps.event.addListener(this.map, 'idle', function() {
$('#loading').hide();
});

在清除叠加层的函数中,我首先显示加载动画,然后使用 setMap(null) 清除每个标记。然后,我通过将经度更改为 .000000001,稍微使 map 重新居中。这发生在所有 setMap() 调用之后,并触发隐藏加载动画的“空闲”事件。

// 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);
}

这有点hack,但我希望其他人觉得这很有用。

关于javascript - 谷歌地图 API v3 : Is there a callback or event listener for a setMap() event?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3461246/

25 4 0
文章推荐: javascript - 是否有可能 "sandbox"任意 JavaScript 只在一个
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com