取消群集仍显示群集标记Google Maps Android

取消群集仍显示群集标记Google Maps Android,android,google-maps,Android,Google Maps,我正在使用android maps utils对google maps api v2上的标记进行聚类。它工作得很好,但当我转到“最大缩放”时,簇变为未聚集,它不显示标记pin,而是显示聚集的标记/圆 代码如下: binding.mapView!!.getMapAsync(OnMapReadyCallback { mMap -> googleMap = mMap // Initialize the manager with the

我正在使用android maps utils对google maps api v2上的标记进行聚类。它工作得很好,但当我转到“最大缩放”时,簇变为未聚集,它不显示标记pin,而是显示聚集的标记/圆

代码如下:

        binding.mapView!!.getMapAsync(OnMapReadyCallback { mMap ->
           googleMap = mMap
            // Initialize the manager with the context and the map.
            // (Activity extends context, so we can pass 'this' in the constructor.)

            // Initialize the manager with the context and the map.
            // (Activity extends context, so we can pass 'this' in the constructor.)


            // For showing a move to my location button
            if (ActivityCompat.checkSelfPermission(
                    this,
                    Manifest.permission.ACCESS_FINE_LOCATION
                ) !== PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(
                    this
                    Manifest.permission.ACCESS_COARSE_LOCATION
                ) !== PackageManager.PERMISSION_GRANTED
            ) {
                // TODO: Consider calling
                //    ActivityCompat#requestPermissions
                // here to request the missing permissions, and then overriding
                //   public void onRequestPermissionsResult(int requestCode, String[] permissions,
                //                                          int[] grantResults)
                // to handle the case where the user grants the permission. See the documentation
                // for ActivityCompat#requestPermissions for more details.
                return@OnMapReadyCallback
            }
           googleMap?.isMyLocationEnabled = true

setUpMap()

        })
 

fun setUpMap(){
        var latLng1 = position()
        val offsetItem = MyItem(latLng1?.latitude!!, latLng1?.longitude!!)


     
        var latLng2 = position()
        val offsetItem1 = MyItem(latLng2?.latitude!!, latLng2?.longitude!!)
    


        mClusterManager = ClusterManager(this, googleMap)
        var renderer = MarkerClusterRenderer(this, googleMap, mClusterManager!!)
        mClusterManager!!.renderer = renderer


       googleMap?.setOnCameraMoveListener(renderer)
        googleMap?.setOnCameraIdleListener(mClusterManager)

        mClusterManager?.addItem(offsetItem)
        mClusterManager?.addItem(offsetItem1)
        mClusterManager?.cluster()

}

  open class MarkerClusterRenderer(
        context: Context?, map: GoogleMap?,
        clusterManager: ClusterManager<MyItem?>
    ) :
        DefaultClusterRenderer<MyItem?>(context, map, clusterManager),
        ClusterManager.OnClusterItemClickListener<MyItem>, GoogleMap.OnCameraMoveListener {

        var ctx: Context? = context
        var mapIn: GoogleMap? = map
        override fun shouldRenderAsCluster(cluster: Cluster<MyItem?>): Boolean {
            return zoomValue!! < 13
        }

        override fun onClusterItemClick(item: MyItem?): Boolean {
            return false
        }

        override fun onBeforeClusterItemRendered(item: MyItem, markerOptions: MarkerOptions) { // 5
            markerOptions.icon(
                BitmapDescriptorFactory.fromBitmap(
                    getMarkerBitmapFromView(
                    )
                )
            )
        }

        override fun onCameraMove() {
           mClusterManager?.cluster()
           zoomValue = mapIn?.cameraPosition?.zoom!!
        }
    }
binding.mapView!!。getMapAsync(OnMapReadyCallback{mMap->
谷歌地图=mMap
//使用上下文和映射初始化管理器。
//(活动扩展了上下文,因此我们可以在构造函数中传递“this”。)
//使用上下文和映射初始化管理器。
//(活动扩展了上下文,因此我们可以在构造函数中传递“this”。)
//用于显示“移动到我的位置”按钮
如果(ActivityCompat.checkSelfPermission(
这
Manifest.permission.ACCESS\u FINE\u位置
)!==PackageManager.PERMISSION\u已授予和活动公司.checkSelfPermission(
这
Manifest.permission.ACCESS\u位置
)!==已授予PackageManager.PERMISSION\u权限
) {
考虑到呼叫
//ActivityCompat#请求权限
//在此处请求缺少的权限,然后覆盖
//public void onRequestPermissionsResult(int-requestCode,字符串[]权限,
//int[]格兰特结果)
//处理用户授予权限的情况。请参阅文档
//对于ActivityCompat,请请求权限以获取更多详细信息。
return@OnMapReadyCallback
}
googleMap?.isMyLocationEnabled=true
setUpMap()
})
趣味地图(){
var latLng1=位置()
val offsetItem=MyItem(latLng1?纬度!!,latLng1?经度!!)
var latLng2=位置()
val offsetItem1=MyItem(latLng2?纬度!!,latLng2?经度!!)
mClusterManager=ClusterManager(这是谷歌地图)
var renderer=MarkerClusterRenderer(这个,谷歌地图,mClusterManager!!)
mClusterManager!!.renderer=渲染器
googleMap?.setOnCameraMoveListener(渲染器)
谷歌地图?.setOnCameraideListener(McClusterManager)
McClusterManager?.addItem(offsetItem)
McClusterManager?.addItem(offsetItem1)
mClusterManager?.cluster()
}
开放类MarkerClusterRenderer(
上下文:上下文?,地图:谷歌地图?,
clusterManager:clusterManager
) :
DefaultClusterRenderer(上下文、映射、clusterManager),
ClusterManager.OnClusterItemClickListener,GoogleMap.OnCameraMoveListener{
var ctx:上下文?=上下文
var mapIn:GoogleMap?=map
覆盖fun shouldRenderAsCluster(cluster:cluster):布尔值{
返回zoomValue!!<13
}
重写有趣的onClusterItemClick(项:MyItem?):布尔值{
返回错误
}
重写fun onBeforeClusterItemRendered(项:MyItem,markerOptions:markerOptions){//5
markerOptions.icon(
BitmapDescriptorFactory.fromBitmap(
getMarkerBitmapFromView(
)
)
)
}
覆盖fun onCameraMove(){
mClusterManager?.cluster()
zoomValue=mapIn?.cameraPosition?.zoom!!
}
}
图像:
1-群集:缩放级别

2-未聚集:缩放级别高于13