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 时出错

Google Maps Android API V2 检查 Google Maps 应用程序是不是被禁用

错误:com.google.maps.android.kml 包不存在