如何在android中增加Marker Cluster的网格大小?

时间:2015-08-31 08:33:59

标签: google-maps google-maps-markers google-maps-android-api-2

我在我的应用程序中使用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");
    }
}

}

1 个答案:

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