我使用googlemapsv2forandroid和maps utils扩展库进行标记集群。应用程序的某些部分不需要获取群集标记。
有没有什么方法可以禁止clustermanager对标记进行聚类,并且在某些条件下允许它再次对项进行聚类?
最佳答案
我找到了另一个解决办法。我发现onDefaultClusterRenderer
methodshouldRenderAsCluster
负责标记是否呈现为集群。所以我创建了一个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);