我在我的应用程序中使用Marker集群。我想增加网格大小。我已经自定义了DefaultClusterRenderer类,但是我没有找到任何东西来增加它的大小。请帮我解释如何增加它。 以下是自定义clusterRenderer的代码
public class MyClusterRenderer extends DefaultClusterRenderer<MyItem> {
public MyClusterRenderer(Context context, GoogleMap map, ClusterManager clusterManager) {
super(context, map, clusterManager);
}
@Override
protected boolean shouldRenderAsCluster(Cluster<MyItem> cluster) {
//start clustering if at least 2 items overlap
return cluster.getSize() > 4;
}
@Override
protected void onBeforeClusterItemRendered(MyItem item,MarkerOptions markerOptions){
if(item.isRegister()==true)
{
BitmapDescriptor markerDescriptor = BitmapDescriptorFactory.defaultMarker(340);
markerOptions.icon(markerDescriptor);
//markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.x));
}
else if(item.isRegister()==false)
{
BitmapDescriptor markerDescriptor = BitmapDescriptorFactory.defaultMarker(60);
markerOptions.icon(markerDescriptor).title("false");
}
}
}
答案 0 :(得分:0)
一个简单的解决方案是使用NonHierarchicalDistanceBasedAlgorithm。创建一个新的calss并使用NonHierarchicalDistanceBasedAlgorithm扩展它,然后重写方法getClusters(双缩放)。在这种方法中,您可以通过更改zoomSpecificSpan的值来设置网格大小,在我的i中将第一个值更改为200.0D,它适用于我。
public Set<? extends Cluster<T>> getClusters(double zoom) {
int discreteZoom = (int)zoom;
double zoomSpecificSpan = 200.0D / Math.pow(2.0D, (double)discreteZoom) / 256.0D;
HashSet visitedCandidates = new HashSet();
HashSet results = new HashSet();
HashMap distanceToCluster = new HashMap();
HashMap itemToCluster = new HashMap();
PointQuadTree var10 = this.mQuadTree;