簡體   English   中英

markerclusterer檢查marker是否在cluster中

[英]markerclusterer check if marker is in cluster

我有一個基於Web的地圖,使用jquery-ui-mapmarkerclusterer插件制作谷歌地圖。

我過濾掉應該顯示哪些標記然后更新地圖。

我需要創建一個非聚集標記列表,因此為此需要一種方法來檢查聚類與標記,並找出哪些不是聚類。

有沒有什么技巧可以做到這一點?

我試圖循環遍歷群集並手動檢查群集的標記,但是收到錯誤告訴我未定義群集屬性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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM