0

大量のポイントを Google マップにフィードした後、手元にマーカーが多すぎることに気付き、 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マーカーの配列をコンストラクターに渡す必要があります。これは、MarkerClusterer の非常に基本的な使用法で変更された init 関数です。

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 に答える