gpt4 book ai didi

javascript - Ajax 之后设置异步标记集群

转载 作者:行者123 更新时间:2023-12-03 12:18:21 24 4
gpt4 key购买 nike

我的网页上有一个 Google map v3,它将设置很多标记 (3000 - 5000)。

这是我现在的缩短代码:

function initialize(){
var map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);

$.ajax({
type: 'POST',
dataType: 'json',
url: Routing.generate('turn_getajaxfirstpoiofallturns'),
async: false
})
.done(function(response){
firstPoiOfAllTurns = response;
for (var i = 0; i < firstPoiOfAllTurns.length; ++i) {
markers.push(addMarker(map, firstPoiOfAllTurns[i].pois[0], firstPoiOfAllTurns[i].id, '' ,infowindow));
}
})
.fail(function(jqXHR, textStatus, errorThrown){
alert('Error : ' + errorThrown);
});

var mcOptions = {gridSize: 50, maxZoom: 15};
var mc = new MarkerClusterer(map, markers, mcOptions);
}

google.maps.event.addDomListener(window, 'load', initialize);

我想删除此代码的 async: false 部分,以便即使尚未设置标记,该网站也能正常工作。到目前为止,这是有效的,但如果我去掉 async: false ,MarkerClusterer 将不会被设置。所以标记会被显示,但是如果没有集群, map 真的很慢。

然后我尝试在 .done 函数中获取这两行代码,但也没有成功。

如何将标记群集异步设置为 map ,以便在 ajax 函数完成后标记将显示为群集?

最佳答案

您可以在ajax调用之前创建标记聚类器,并在for循环中将每个创建的标记添加到标记聚类器:

    for (var i = 0; i < firstPoiOfAllTurns.length; ++i) {
// markers.push(addMarker(map, firstPoiOfAllTurns[i].pois[0], firstPoiOfAllTurns[i].id, '' ,infowindow));

mc.addMarker(addMarker(map, firstPoiOfAllTurns[i].pois[0], firstPoiOfAllTurns[i].id, '' ,infowindow), true);
}

我假设 addMarker() 创建一个新标记。

关于javascript - Ajax 之后设置异步标记集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24571578/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com