Android:Google Maps Clustermanager 行为异常。群集图标有时在全放大时不会消失。为啥?
Posted
技术标签:
【中文标题】Android:Google Maps Clustermanager 行为异常。群集图标有时在全放大时不会消失。为啥?【英文标题】:Android: Google Maps Clustermanager behaves weirdly. The cluster icon does not go away sometimes on full zoom. Why?Android:Google Maps Clustermanager 行为异常。群集图标有时在全放大时不会消失。为什么? 【发布时间】:2016-03-03 16:45:11 【问题描述】:我编写了以下方法来显示我的标记(集群)。但是,一些集群工作正常 - 即当我放大时,蓝色集群图标(前表示 10+)消失并显示各个标记。 但是,有时,当我完全放大时,蓝色簇标记仍会与单个标记之一一起显示在完全缩放中。为什么会这样?
private void displayCluster(List<MyItem> items)
mClusterManager = new ClusterManager<MyItem>(this, googleMap);
mClusterManager.setRenderer(new MyRender(getApplicationContext(),googleMap,mClusterManager));
googleMap.setOnCameraChangeListener(mClusterManager);
googleMap.setOnMarkerClickListener(mClusterManager);
for (MyItem item : items)
mClusterManager.addItem(item);
【问题讨论】:
检查***.com/questions/27236046/…。可以帮助你 我尝试了那里的三个步骤,但都没有解决问题。 【参考方案1】:DefaultClusterRenderer 决定标记是否应该被聚集。这个类包含 DefaultClusterRenderer#shouldRenderAsCluster() 方法 - 只有当簇的大小> MIN_CLUSTER_SIZE 时才开始聚集。 MIN_CLUSTER_SIZE 的默认值为 4。
您需要扩展 DefaultClusterRenderer 类并重写 shouldRenderAsCluster() 方法以提供您自己的逻辑:
class CustomRenderer<T extends ClusterItem> extends DefaultClusterRenderer<T>
public CustomRenderer(Context context, GoogleMap map, ClusterManager<T> clusterManager)
super(context, map, clusterManager);
@Override
protected boolean shouldRenderAsCluster(Cluster<T> cluster)
//start clustering if at least 2 items overlap
//Change your logic here
return cluster.getSize() > 1;
private void setUpMapIfNeeded()
if (mMap != null)
return;
mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
if (mMap != null)
mClusterManager = new ClusterManager<Place>(this, mMap);
mClusterManager.setRenderer(new CustomRenderer<Place>(this, mMap, mClusterManager));
........
【讨论】:
+1 用于指出 shouldRenderAsCluster()。另一种方法也是设置最小集群大小,如 setMinClusterSize(1);以上是关于Android:Google Maps Clustermanager 行为异常。群集图标有时在全放大时不会消失。为啥?的主要内容,如果未能解决你的问题,请参考以下文章
com.google.android.gms.maps.MapFragment:无法解析符号“地图”
import com.google.android.maps.geopoint 无法解析
com.google.android.maps 在 Android Studio 中不存在
膨胀类 com.google.android.maps.MapView 时出错