我正在使用Google Maps V2 for Android和maps utils扩展库进行标记聚类。应用程序的某些部分不需要获取聚集标记。
有没有办法禁止clusterManager集群标记,并在某些条件下让它再次集群项目?
答案 0 :(得分:12)
我发现自己是另一种解决方案。我发现DefaultClusterRenderer
方法shouldRenderAsCluster
负责标记是否会呈现为群集。所以我创建了一个CustomRenderer类,它扩展了DefaultClusterRenderer
并创建了一个带有布尔变量的方法来确定渲染器是否应该聚类。
public class CustomRenderer extends DefaultClusterRenderer<MarkerItem>
{
private boolean shouldCluster = true;
private static final int MIN_CLUSTER_SIZE = 1;
//Some code....
public void setMarkersToCluster(boolean toCluster)
{
this.shouldCluster = toCluster;
}
我也覆盖了我之前提到过的方法。
@Override
protected boolean shouldRenderAsCluster(Cluster<MarkerItem> cluster)
{
if (shouldCluster)
{
return cluster.getSize() > MIN_CLUSTER_SIZE;
}
else
{
return shouldCluster;
}
}
现在,如果我想停止群集,我只需从我想要的活动中调用此方法。
ClusterManager clusterManager = new ClusterManager<MarkerItem>(this, googleMap);
CustomRenderer customRenderer = new CustomRenderer(this, googleMap, clusterManager);
clusterManager.setRenderer(customRenderer);
customRenderer.setMarkersToCluster(false);
答案 1 :(得分:2)
集群管理器实现仅能够执行内置集群功能。如果您希望某些标记不会聚类,则需要将这些标记直接添加到地图中。当您决定对这些标记进行聚类时,您需要将它们从地图中删除并将其信息传输到集群管理器,以便它接管。