0

私はこれが以前にたくさんカバーされていて、それを機能させるための簡単な調整をしていることを知っていますが、それはそれをさらにいらいらさせています。

私はGoogleMapsAPIV3とJavascript全体に不慣れです。マーカーを付けた地図を作成できましたが、マーカークラスター機能を実装したいと考えています。

私のコードは次のとおりです。

<script type="text/javascript">
 var markers = [
['Wathegar',  58.443420, -3.247061, '/Projects/Wathegar/', '/images/MapsIcons/operational.png'],
['Wathegar 2',  58.436726, -3.216505, '/Projects/Wathegar_2/', '/images/MapsIcons/consented.png'],
['Sibmister',  58.570869,  -3.429623, '/Projects/Sibmister/', '/images/MapsIcons/planning.png'],
['Humbleburn',  54.851982,  -1.651425, '/Projects/Humbleburn/', '/images/MapsIcons/planning.png'],
['Achlachan',  58.449348, -3.452797, '/Projects/Achlachan/', '/images/MapsIcons/pre-planning.png'],
['Bonwick',   53.955025,  -0.227451, '/Projects/Bonwick/', '/images/MapsIcons/pre-planning.png'],
['Garton',    54.033081,  -0.494127, '/Projects/Garton/', '/images/MapsIcons/pre-planning.png'],
['Hill of Lybster',  58.603081,   -3.679004, '/Projects/Hill-of-Lybster/', '/images/MapsIcons/planning.png'],
['Moota',   54.710442,    -3.331947, '/Projects/Moota/', '/images/MapsIcons/pre-planning.png'],
['Sherburn Stone',  54.770432,   -1.4593797, '/Projects/Sherburn-Stone/', '/images/MapsIcons/pre-planning.png'],
['Spring Brook',  53.498360,    -1.624646, '/Projects/Spring_Brook/', '/images/MapsIcons/pre-planning.png'],
['Sunnyside',   55.387691,  -3.949585, '/Projects/Sunnyside/', '/images/MapsIcons/pre-planning.png'],
['Thacksons Well',  52.955578,   -0.759824, '/Projects/Thacksons_Well/', '/images/MapsIcons/pre-planning.png'],
];
function initializeMaps() {
var latlng = new google.maps.LatLng( 56.2, -2,5);
var myOptions = {
    zoom: 6,
    center:latlng,
    mapTypeId: google.maps.MapTypeId.HYBRID,
    mapTypeControl: false,
    panControl: false,
    zoomControl: true,
  zoomControlOptions: {
style: google.maps.ZoomControlStyle.SMALL
  },
    streetViewControl: false,
};
var map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
var infowindow = new google.maps.InfoWindow(), marker, i;
for (i = 0; i < markers.length; i++) {  
    marker = new google.maps.Marker({
        position: new google.maps.LatLng(markers[i][1], markers[i][2]),
        map: map,
        url:markers[i][3],
        icon:markers[i][4]
});
google.maps.event.addListener(marker, 'click', function() {
window.location.href = this.url;
});
}
}
</script>

この例で使用されている形式で他のいくつかのブログと一緒に再構築しようとしましたが、JSについて十分に理解していないため、何をする必要があるかを知ることができません。

どんな助けでも大歓迎です。ありがとう!

4

2 に答える 2

3

JSONの形式は問題ありません。MarkerClustererには影響しません。

不足しているのは、MarkerClustererのインスタンスを作成し、このインスタンスにマーカーを追加することです。

var mc = new MarkerClusterer(map),//MarkerClusterer-instance
    marker, i;
for (i = 0; i < markers.length; i++) {  
    marker = new google.maps.Marker({
        position: new google.maps.LatLng(markers[i][1], markers[i][2]),
        map: map,
        url:markers[i][3],
       icon:markers[i][4]
});

google.maps.event.addListener(marker, 'click', function() {
 window.location.href = this.url;
});
mc.addMarker(marker);//add the marker to the MarkerClusterer
}

注意:リンクされたページはMaps-API-V2用のMarkerClustererを使用し、V3用はこの更新されたバージョンを使用します:http: //google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer_compiled .js

于 2013-02-25T23:02:31.923 に答える
1

MarkerClustererに一度にすべてのマーカーをプッシュすることもできます

var marker, i;
var markersArray = [];
for (i = 0; i < markers.length; i++) {  
    marker = new google.maps.Marker({
      position: new google.maps.LatLng(markers[i][1], markers[i][2]),
      map: map,
      url:markers[i][3],
      icon:markers[i][4]
    });

   google.maps.event.addListener(marker, 'click', function() {
    window.location.href = this.url;
   });
   markersArray.push(marker);

}
var mc = new MarkerClusterer(map,markersArray),//MarkerClusterer-instance which add all markers to the MarkerClusterer
于 2013-02-26T17:28:49.270 に答える