From 4f744c41806a097b6f7b5f91d387c2110598876e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Lo=CC=81pez=20Man=CC=83as?= Date: Mon, 14 Jul 2025 17:36:23 +0200 Subject: [PATCH] feat: adding cluster size as title for Markers --- .../utils/demo/CustomMarkerClusteringDemoActivity.java | 9 +++++++++ .../android/clustering/view/DefaultClusterRenderer.java | 9 +++++++++ 2 files changed, 18 insertions(+) diff --git a/demo/src/main/java/com/google/maps/android/utils/demo/CustomMarkerClusteringDemoActivity.java b/demo/src/main/java/com/google/maps/android/utils/demo/CustomMarkerClusteringDemoActivity.java index d272696b6..7e8be36a0 100644 --- a/demo/src/main/java/com/google/maps/android/utils/demo/CustomMarkerClusteringDemoActivity.java +++ b/demo/src/main/java/com/google/maps/android/utils/demo/CustomMarkerClusteringDemoActivity.java @@ -39,8 +39,10 @@ import com.google.maps.android.ui.IconGenerator; import com.google.maps.android.utils.demo.model.Person; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.List; +import java.util.Locale; import java.util.Random; /** @@ -109,12 +111,14 @@ protected void onBeforeClusterRendered(@NonNull Cluster cluster, @NonNul // Draw multiple people. // Note: this method runs on the UI thread. Don't spend too much time in here (like in this example). markerOptions.icon(getClusterIcon(cluster)); + markerOptions.title(getLocalizedNumber(cluster.getSize())); } @Override protected void onClusterUpdated(@NonNull Cluster cluster, Marker marker) { // Same implementation as onBeforeClusterRendered() (to update cached markers) marker.setIcon(getClusterIcon(cluster)); + marker.setTitle(getLocalizedNumber(cluster.getSize())); } /** @@ -250,4 +254,9 @@ private LatLng position() { private double random(double min, double max) { return mRandom.nextDouble() * (max - min) + min; } + + private String getLocalizedNumber(int number) { + NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault()); + return numberFormat.format(number); + } } \ No newline at end of file diff --git a/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java b/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java index 08ab0e081..a819f2833 100644 --- a/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java +++ b/library/src/main/java/com/google/maps/android/clustering/view/DefaultClusterRenderer.java @@ -56,11 +56,13 @@ import com.google.maps.android.ui.IconGenerator; import com.google.maps.android.ui.SquareTextView; +import java.text.NumberFormat; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Queue; import java.util.Set; @@ -906,6 +908,7 @@ protected void onClusterItemUpdated(@NonNull T item, @NonNull Marker marker) { protected void onBeforeClusterRendered(@NonNull Cluster cluster, @NonNull MarkerOptions markerOptions) { // TODO: consider adding anchor(.5, .5) (Individual markers will overlap more often) markerOptions.icon(getDescriptorForCluster(cluster)); + markerOptions.title(getLocalizedNumber(cluster.getSize())); } /** @@ -960,6 +963,7 @@ protected void onClusterRendered(@NonNull Cluster cluster, @NonNull Marker ma protected void onClusterUpdated(@NonNull Cluster cluster, @NonNull Marker marker) { // TODO: consider adding anchor(.5, .5) (Individual markers will overlap more often) marker.setIcon(getDescriptorForCluster(cluster)); + marker.setTitle(getLocalizedNumber(cluster.getSize())); } /** @@ -1176,4 +1180,9 @@ public void onAnimationUpdate(ValueAnimator valueAnimator) { marker.setPosition(position); } } + + private String getLocalizedNumber(int number) { + NumberFormat numberFormat = NumberFormat.getInstance(Locale.getDefault()); + return numberFormat.format(number); + } }