Google地图有一项名为Marker Clusterer的功能,可让您将基于网格的群集应用于标记集合。
Marker Clusterer将每个标记计为一个,它总结了网格中标记的数量。不同的是,我想为每个标记分配权重,并在群集中总结这些权重。是否可以使用Google Maps API?你知道其他任何提供类似功能的javascript库吗?
答案 0 :(得分:5)
它并不像看起来那么复杂。
markerclusterer-library提供了覆盖计算器功能的选项(这是构建群集图标的功能)。
将重量存储为标记的属性,例如:
new google.maps.Marker({position:new google.maps.LatLng(1,2),weight:8});
计算器功能可能如下所示:
var calc=function(markers, numStyles) {
var weight=0;
for(var i=0;i<markers.length;++i){
weight+=markers[i].weight;
}
return {
text: weight,
index: Math.min(String(weight).length, numStyles)
};
}
要应用此自定义功能:
初始化没有标记的聚类器:
var markerCluster = new MarkerClusterer(map);
设置功能
markerCluster.setCalculator(calc);
添加标记:
markerCluster.addMarkers(markers);
演示:http://jsfiddle.net/doktormolle/H4EJu/
陷阱:计算器函数必须迭代所有标记(默认情况下不会,它只根据标记数组的长度计算)。这会影响MarkerClusterer的性能,特别是当你有很多标记时。