Javascript 将Marker Clusterer设置为Ajax之后的异步
我有一个谷歌地图v3在我的网页上,这将与许多标记(3000-5000)设置 这是我现在的简短代码:Javascript 将Marker Clusterer设置为Ajax之后的异步,javascript,ajax,google-maps,google-maps-api-3,Javascript,Ajax,Google Maps,Google Maps Api 3,我有一个谷歌地图v3在我的网页上,这将与许多标记(3000-5000)设置 这是我现在的简短代码: function initialize(){ var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); $.ajax({ type: 'POST', dataType: 'json', url:
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);
函数初始化(){
var map=new google.maps.map(document.getElementById(“map_canvas”),
地图选项);
$.ajax({
键入:“POST”,
数据类型:“json”,
url:Routing.generate('turn\u getajaxfirstpoiofallturns'),
异步:false
})
.完成(功能(响应){
firstPoiOfAllTurns=响应;
对于(变量i=0;i
我想去掉这段代码中的async:false
部分,这样即使尚未设置标记,站点也能正常工作。到目前为止这是可行的,但是如果我去掉async:false
,就不会设置MarkerClusterer。因此,将显示标记,但如果没有群集,贴图速度非常慢
然后,我尝试在.done
函数中获取这两行代码,但它也不起作用
如何将markerclusterer设置为映射异步,以便在ajax函数完成后标记显示为集群?您可以在ajax调用之前创建marker clusterer,并将每个创建的标记添加到for循环中的marker clusterer中:
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);
}
for(变量i=0;i
我假设
addMarker()
创建一个新的标记。另一个选项是在创建标记的回调函数中移动clusterer的创建和初始化:
.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));
}
var mcOptions = {gridSize: 50, maxZoom: 15};
var mc = new MarkerClusterer(map, markers, mcOptions);
})
.done(函数(响应){
firstPoiOfAllTurns=响应;
对于(变量i=0;i
我首先想到的是可能的重复,但它不会改变任何事情:/但是没有错误,我不知道为什么它不工作。今天我再次尝试,我可以用mc.addMarker(addMarker(map,firstPoiOfAllTurns[i].pois[0],firstPoiOfAllTurns[i].id',infowindow)解决它;mc.draw()代码>谢谢!我所需要的就是添加标记(myMarker)。谢谢