markerclusterer检查标记是在集群
我有一个使用jquery-ui-map和markerclusterer插件做一个谷歌地图一个基于Web的地图。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_
阵列并检索您的群集标记。
getClusters()现在在文档:MarkerClustererPlus docs
稍微倾倒,但有效的方法....
您可以单独(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);
}
它可能会稍微转储,但对我来说使用markerCluster.getTotalClusters()总是返回0,即使数组中显然有11个标记。可能是什么问题呢?! – suMi
好消息和坏消息...好消息:我自己找到了答案。这与你所描述的完全一样。坏消息:我花了一个多星期的时间寻找答案:-P。任何有类似问题的人都应该这样做。感谢您的回答 – jaget
您是否使用MarkerClustererPlus,因为在常规MarkerClusterer中没有方法getClusters()? –
@DejanStuparic如果你看看[文档](http://google-maps-utility-library-v3.googlecode.com/svn/tags/markerclustererplus/2.0.7/docs/reference.html#MarkerClusterer)他们清楚地表明它不存在了'getClusters()'方法.. – hitautodestruct