markerclusterer检查marker是否在cluster中

jag*_*get 4 javascript jquery google-maps google-maps-markers markerclusterer

我有一个基于Web的地图,使用jquery-ui-mapmarkerclusterer插件制作谷歌地图.

我过滤掉应该显示哪些标记然后更新地图.

我需要创建一个非聚集标记列表,所以为此需要一种方法来检查聚类与标记,并找出哪些不是聚类.

有没有什么技巧可以做到这一点?

我试图循环遍历群集并手动检查群集中的标记,但得到错误告诉我var_clusterer.clusters_未定义群集属性.

hit*_*uct 7

注意:此解决方案使用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
    }
}
Run Code Online (Sandbox Code Playgroud)

使用getClusters()循环通过集群对象获取数组后.对于每个群集,您可以拉取当前markers_阵列并检索群集标记.

getClusters()现在位于docs:MarkerClustererPlus docs中

  • 对于使用google.maps V3的任何人,应该注意`clusterer.getClusters()`返回所有簇,包括标记计数为1的簇(即显示为标记而不是簇).如果您想知道特定标记是否真正聚类,那么(当如上所述循环时)您必须仅测试长度> 1的聚类中的那些标记. (4认同)
  • 你在使用MarkerClustererPlus,因为在常规的MarkerClusterer中没有getClusters()方法吗? (2认同)
  • 对我来说它不存在,我不得不使用`var clusters = clusterManager.clusters_;` (2认同)