我使用googlemapsv2forandroid和maps utils扩展库进行标记集群。应用程序的某些部分不需要获取群集标记。
有没有什么方法可以禁止clustermanager对标记进行聚类,并且在某些条件下允许它再次对项进行聚类?

最佳答案

我找到了另一个解决办法。我发现onDefaultClusterRenderermethodshouldRenderAsCluster负责标记是否呈现为集群。所以我创建了一个customrenderer类,它扩展了DefaultClusterRenderer,并创建了一个带有布尔变量的方法来确定renderer是否应该集群。

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);

08-05 14:11