如何增加android中Marker Cluster的网格大小?
How to increase the grid size of Marker Cluster in android?
我在我的应用程序中使用标记集群。我想增加网格大小。我已经自定义了 DefaultClusterRenderer class,但我没有在其中找到任何东西来增加 size.Please 帮助我了解如何增加它。
下面是自定义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");
}
}
}
一个简单的解决方案是使用 NonHierarchicalDistanceBasedAlgorithm。创建一个新的 calss 并使用 NonHierarchicalDistanceBasedAlgorithm 对其进行扩展,然后覆盖方法 getClusters(double zoom)。在这种方法中,您将能够通过更改 zoomSpecificSpan 的值来设置网格大小,在我中,我将第一个值更改为 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;
我在我的应用程序中使用标记集群。我想增加网格大小。我已经自定义了 DefaultClusterRenderer class,但我没有在其中找到任何东西来增加 size.Please 帮助我了解如何增加它。 下面是自定义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");
}
}
}
一个简单的解决方案是使用 NonHierarchicalDistanceBasedAlgorithm。创建一个新的 calss 并使用 NonHierarchicalDistanceBasedAlgorithm 对其进行扩展,然后覆盖方法 getClusters(double zoom)。在这种方法中,您将能够通过更改 zoomSpecificSpan 的值来设置网格大小,在我中,我将第一个值更改为 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;