Skip to content Skip to sidebar Skip to footer

Android Google Map Utils Clustering Distance

I'm using Android Google Map utils to enable clustering of my Markers. I'm using 10 Markers When I press on a button, I call: mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngBou

Solution 1:

Try to override shouldRenderAsCluster, so clustering starts from just 2 items:

When declaring the cluster manager:

    mClusterManager.setRenderer(new CustomRenderer<YOUR_TYPE>(getActivity(), googleMap, mClusterManager));

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
        return cluster.getSize() > 1;
    }
 ...
}

Solution 2:

You can also use setMinClusterSize(1);

public MyIconRendered(Context context, GoogleMap map,
                      ClusterManager<AbstractMarker> clusterManager) {
    super(context, map, clusterManager);
    setMinClusterSize(1);
}

Solution 3:

Using a solution of Alexandr Stukalov or Pavel Dudka:

class CustomClusterRenderer<T : ClusterItem>(
    val context: Context,
    val map: GoogleMap,
    clusterManager: ClusterManager<T>
) : DefaultClusterRenderer<T>(context, map, clusterManager) {

    init {
        minClusterSize = 1
    }
}

Usage:

private var clusterManager: ClusterManager<CustomClusterItem>? = null

override fun onMapReady(googleMap: GoogleMap) {
    this.googleMap = googleMap
    ...

    clusterManager = ClusterManager(context!!, googleMap)
    val clusterRenderer = CustomClusterRenderer(context!!, googleMap, clusterManager!!)
    clusterManager!!.renderer = clusterRenderer
}

data class CustomClusterItem(
    private val position: LatLng,
    private val title: String,
    private val snippet: String,
    val id: Int,
    val index: Int
) : ClusterItem {
    override fun getSnippet(): String = snippet

    override fun getTitle(): String = title

    override fun getPosition(): LatLng = position
}

Post a Comment for "Android Google Map Utils Clustering Distance"