5

我将 Google Maps V2 for Android 与 maps utils 扩展库一起用于标记聚类。应用程序的某些部分不需要获取聚集标记。

有什么方法可以禁止 clusterManager 对标记进行聚类,并在某些条件下让它再次对项目进行聚类?

4

2 回答 2

14

我找到了另一个解决方案。我发现 onDefaultClusterRenderer方法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);
于 2014-12-04T08:49:23.660 回答
2

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

于 2014-12-03T14:18:46.650 回答