0

在将一堆点输入谷歌地图后,我意识到我手上的标记太多了,所以我尝试使用MarkerClusterer,但到目前为止没有成功。据我的理解,它应该在地图被实例化和填充之后被调用——所以我尝试markerCluster = new MarkerClusterer(map);在之前添加一个return;好吧,它不起作用,我不知道我该如何前进。

此外,在我的示例中,init()没有在任何地方调用,但地图有效。实例化是否发生在第 4 行?最重要的是,我哪里出错了?

function init() {
    var latlng = new google.maps.LatLng(map_center[0], map_center[1]);
    var myOptions = { zoom: 7, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP, maxZoom: 18};
    map = new google.maps.Map(document.getElementById("map_div"), myOptions);

    for (var i = 0; i<addresses.length; i++) 
        {
            var pos = new google.maps.LatLng(
                    parseFloat(addresses[i]['lt']), 
                    parseFloat(addresses[i]['ln']) 
                );
            addMarker(pos, addresses[i]);   

        }

    return;
}
4

1 回答 1

1

您需要将一组标记传递给MarkerClusterer构造函数。这是您修改后的 init 函数,具有非常基本的 MarkerClusterer 用法:

function init() {
  var latlng = new google.maps.LatLng(map_center[0], map_center[1]);
  var myOptions = { zoom: 7, center: latlng, mapTypeId: google.maps.MapTypeId.ROADMAP, maxZoom: 18};
  map = new google.maps.Map(document.getElementById("map_div"), myOptions);
  var markers = [];

  for (var i = 0; i<addresses.length; i++){
    var pos = new google.maps.LatLng(
      parseFloat(addresses[i]['lt']), 
      parseFloat(addresses[i]['ln']) 
    );
    markers.push(new google.maps.Marker({'position': pos}));

  }

  var markerCluster = new MarkerClusterer(map, markers);
}
于 2013-01-28T06:30:19.630 回答