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