我目前正在使用MarkerClustererPlus对标记进行聚类。 (欢迎其他任何建议)而且我想知道是否有一种方法可以按洲或国家(而不是按距离)进行聚类。谢谢
最佳答案
尝试使用此代码基于区域进行聚类。
var keys = [];
var markerCluster = [];
var markers = new Object();
var map;
function initialize(){
var mapProp = {
center:center,
zoom:5,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
map=new google.maps.Map(document.getElementById("googleMap")
,mapProp);
//styling cluster image..
var clusterStyles = [
{
opt_textColor: 'black',
url: 'images/cluster.png',
height: 56,
width: 55
},
{
opt_textColor: 'black',
url: 'images/cluster2.png',
height: 53,
width: 52
}
];
//cluster marker options..
var mcOptions = {
// gridSize: 16,
styles: clusterStyles,
maxZoom: 15
};
function initialize(){
var mapProp = {
center:center,
zoom:5,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
map=new google.maps.Map(document.getElementById("googleMap")
,mapProp);
//styling cluster image..
var clusterStyles = [
{
opt_textColor: 'black',
url: 'images/cluster.png',
height: 56,
width: 55
},
{
opt_textColor: 'black',
url: 'images/cluster2.png',
height: 53,
width: 52
}
];
//cluster marker options..
var mcOptions = {
// gridSize: 16,
styles: clusterStyles,
maxZoom: 15
};
//fetching lat long from data base
<?php echo "addmarker(lat,lng); ?>"
for(var k in markers) keys.push(k);
for(var i = 0; i < keys.length; i++)
{
markerCluster[i] = new MarkerClusterer(map, markers[keys[i]],mcOptions);
}
}
function addmarker(lat, lng)
{
var provnce;
var mycenter = new google.maps.LatLng(lat,lng);
var marker = new google.maps.Marker({
position:mycenter,
title:infoName,
id: count++
// animation:google.maps.Animation.BOUNCE
});
//clustering markers based on region..
$.ajax({ url:'https://maps.googleapis.com/maps/api/geocode/json? latlng='+lat+','+lng+'&sensor=true',
async: false,
success: function(data){
// console.log(data.results[0]);
// return;
for (var i=0; i<data.results[0].address_components.length; i++)
{
if (data.results[0].address_components[i].types[0] == "administrative_area_level_1") {
//this is the object for province
provnce = data.results[0].address_components[i]['long_name'];
}
}
provnce = provnce.split(" ",1);
if(markers.hasOwnProperty(provnce))
{
markers[provnce].push(marker);
}
else
{
markers[provnce] = new Array();
markers[provnce].push(marker);
}
// console.log(markers);
}
});
}