5
Google地图有一个很好的功能,称为Marker Clusterer,它允许您将基于网格的集群应用于标记集合。加权标记集群
Marker Clusterer将每个标记都统计为一个,它总结了网格中标记的数量。不同的是,我想为每个标记分配一个权重,并在群集中总结这些权重。 Google Maps API有可能吗?你知道任何其他提供类似功能的JavaScript库吗?
Google地图有一个很好的功能,称为Marker Clusterer,它允许您将基于网格的集群应用于标记集合。加权标记集群
Marker Clusterer将每个标记都统计为一个,它总结了网格中标记的数量。不同的是,我想为每个标记分配一个权重,并在群集中总结这些权重。 Google Maps API有可能吗?你知道任何其他提供类似功能的JavaScript库吗?
它不像看起来那么复杂。
markerclusterer库提供了覆盖计算器函数(这是将构建集群图标的函数)的选项。
商店重量为标志的属性,如:
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/
的陷阱:计算器功能将不得不遍历所有标记(默认情况下它不会,它只计算基于marker-array的长度)。这会影响MarkerClusterer的性能,特别是当您有很多标记时。
您可以为此修改Marker Clusterer库。 –
为每个标记赋予权重并将其加总应该很容易,因为每个标记都应该是一个'lat lng'对,您可以将其存储在数据库或其他东西中,所以您只需沿着坐标设置权重值,所有那些你需要一个循环的标记,你也可以获取权重,然后在一个时间变量中求和它们。问题将主要是显示重量。 – aleation