我手上有一个难题。我正在使用 Google map v3 和 MarkerClusterer v3。当我加载页面时, map 出现,点都在那里,但没有任何东西聚集。
如果我进入 firebug 控制台并执行以下操作:
markerCluster = new MarkerClusterer(map, markers);
聚类突然起作用了。
奇怪的是,如果我在 map 实例化和标记集群实例化之间放置警报,聚类会突然再次起作用。 这是我的 $(document).ready 函数的结尾:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
markerCluster = new MarkerClusterer(map, markers);
使集群工作所需的只是:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
alert("test");
markerCluster = new MarkerClusterer(map, markers);
我在这里缺少什么?我需要以某种方式刷新 map 吗?警报框就是这样吗?
如果您需要更多代码,请给我留言。
最佳答案
您的问题来自于 $.ajax()
、$.getJSON()
是异步方法。一旦执行,您的代码就不会被阻止(否则浏览器也会被阻止)。因此,在AJAX响应处理结束之前调用varmarkerCluster = new MarkerClusterer(map,markerClusterer);
。
要解决此问题,您必须使用回调,例如 complete()
,该回调会在处理完成后触发。
例如:
$.getJSON('/your_data.json', function(data) {
for (var i=0;i<data.length;i++){
// code to display markers
}
}).complete(function() {
var marker_cluster = new MarkerClusterer(map, gmarkers);
});
希望这有帮助。
关于javascript - 谷歌地图 v3 : Markerclusterer not being fired?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3123284/