2013-02-25 66 views
0

我知道这已经被覆盖了很多,它的一个简单的调整使其工作,但这使得它更令人沮丧。将MarkerClusterer应用于Google Maps API

我是Google Maps API V3和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> 

我试过在this example使用连同其他一些博客的格式重建它,但我没有JS的一个很好的理解不够知道我需要做什么。

任何帮助将不胜感激。 谢谢!

回答

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 
} 

请注意:链接的页面使用MarkerClusterer的地图,API-V2,对于V3使用此更新版本: http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer_compiled.js

+0

非常感谢,我一直试图让它工作几个小时! – JonnyHarper 2013-02-26 08:41:52

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