4

我有一个使用jquery-ui-mapmarkerclusterer插件做一个谷歌地图一个基于Web的地图。markerclusterer检查标记是在集群

我筛选出哪些标记应该显示或不显示,然后更新地图。

我需要创建非集群标记列表等,为此需要一种方法来检查集群针对标志,并找出哪些是不聚集。

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

我已经通过集群试图周期和手动检查标记对集群,但得到一个错误,告诉我物业var_clusterer.clusters_没有定义的集群。

回答

6

:该解决方案使用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_阵列并检索您的群集标记。

getClusters()现在在文档:MarkerClustererPlus docs

+0

好消息和坏消息...好消息:我自己找到了答案。这与你所描述的完全一样。坏消息:我花了一个多星期的时间寻找答案:-P。任何有类似问题的人都应该这样做。感谢您的回答 – jaget

+2

您是否使用MarkerClustererPlus,因为在常规MarkerClusterer中没有方法getClusters()? –

+1

@DejanStuparic如果你看看[文档](http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.7/docs/reference.html#MarkerClusterer)他们清楚地表明它不存在了'getClusters()'方法.. – hitautodestruct

2

稍微倾倒,但有效的方法....

您可以单独(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); 
} 
+1

它可能会稍微转储,但对我来说使用markerCluster.getTotalClusters()总是返回0,即使数组中显然有11个标记。可能是什么问题呢?! – suMi