如何暂时禁用地图标记聚类?

时间:2014-12-03 14:11:54

标签: android android-maps-v2 android-maps-utils

我正在使用Google Maps V2 for Android和maps utils扩展库进行标记聚类。应用程序的某些部分不需要获取聚集标记。

有没有办法禁止clusterManager集群标记,并在某些条件下让它再次集群项目?

2 个答案:

答案 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)

集群管理器实现仅能够执行内置集群功能。如果您希望某些标记不会聚类,则需要将这些标记直接添加到地图中。当您决定对这些标记进行聚类时,您需要将它们从地图中删除并将其信息传输到集群管理器,以便它接管。