[英]markerclusterer check if marker is in cluster
我有一個基於Web的地圖,使用jquery-ui-map和markerclusterer插件制作谷歌地圖。
我過濾掉應該顯示哪些標記然后更新地圖。
我需要創建一個非聚集標記列表,因此為此需要一種方法來檢查聚類與標記,並找出哪些不是聚類。
有沒有什么技巧可以做到這一點?
我試圖循環遍歷群集並手動檢查群集的標記,但是收到錯誤告訴我未定義群集屬性var_clusterer.clusters_
。
注意 :此解決方案使用MarkerClustererPlus庫
您可以使用getClusters()方法來清除當前由MarkerClusterer處理的所有集群對象的數組。
var clusterManager = new MarkerClusterer( googleMap, markersArray, clusterOptions ); // setup a new MarkerClusterer
var clusters = clusterManager.getClusters(); // use the get clusters method which returns an array of objects
for( var i=0, l=clusters.length; i<l; i++ ){
for( var j=0, le=clusters[i].markers_.length; j<le; j++ ){
marker = clusters[i].markers_[j]; // <-- Here's your clustered marker
}
}
使用getClusters()循環通過集群對象獲取數組后。 對於每個群集,您可以拉出當前的markers_
array並檢索您的聚簇標記。
getClusters()現在位於docs: MarkerClustererPlus docs中
略微轉儲,但有效的方法....
您可以將標記分別插入Marker Clusterer對象,並在(1)之前和之后(2)調用其.getTotalCluster()方法,以查看新添加的標記是否將進入群集。
我使用這個方法,在getClusters()沒有為我工作之后,也許我沒有通過jquery使用它。
var old_cluster_val = markerCluster.getTotalClusters(); // <-----(1)
markerCluster.addMarker( marker );
var new_cluster_val = markerCluster.getTotalClusters(); // <-----(2)
if (old_cluster_val == new_cluster_val) {
in_a_cluster.push(marker);
} else {
not_in_cluster.push( marker );
}
注意:使用MarkerClustererPlus v2.1.10
isMarkerClustered(marker: Marker, clusterer: MarkerClusterer): boolean {
const clusters = clusterer.getClusters();
for (let i = 0, l = clusters.length; i < l; i++) {
const markers = clusters[i].getMarkers();
for (const m of markers) {
if (m === marker && markers.length > 1) {
return true;
}
}
}
return false;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.