javascript - 谷歌地图 v3 : Markerclusterer not being fired?

标签 javascript google-maps google-maps-api-3

我手上有一个难题。我正在使用 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/

相关文章:

javascript - 循环访问模板中的 Ember 数据模型属性

google-maps - 在 AngularJS 中使用所有谷歌地图 API 功能

google-maps-api-3 - Google Maps api V3 渡轮检测

javascript - 如何更改箭头覆盖的箭头长度

javascript - 谷歌地图和 DART

Javascript 秒表 - 减去时间

javascript - 是否可以在不使用查询字符串的情况下传递 webpack 条目配置选项?

java - 如何在android中使用后台服务获取经纬度?

ios - 在 MapKit 中搜索街道名称、城市的最佳方式...?

javascript - 如何清除绑定(bind)到 Google 地点自动完成的输入?