From eca745d63a1d86d9103ca03b59acb7972bcbfd0d Mon Sep 17 00:00:00 2001 From: Sylvain HOCQ Date: Mon, 29 Aug 2016 17:37:09 +0200 Subject: [PATCH] [android] add method addMarkerViews with only one invalidate * add method addMarkerViews with only one invalidate * clean sample BulkMarkerActivity --- .../com/mapbox/mapboxsdk/maps/MapboxMap.java | 18 +++++++++++++++++- .../annotation/BulkMarkerActivity.java | 9 ++++----- .../src/main/res/values/strings.xml | 1 + 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index e73e7c0e1..d13c6f4ff 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -772,7 +772,23 @@ public class MapboxMap { mMarkerViewManager.invalidateViewMarkersInVisibleRegion(); return marker; } - + + @UiThread + @NonNull + public List addMarkerViews(@NonNull List markerViewOptions) { + List markers = new ArrayList<>(); + for (BaseMarkerViewOptions markerViewOption : markerViewOptions) { + MarkerView marker = prepareViewMarker(markerViewOption); + marker.setMapboxMap(this); + long id = mMapView.addMarker(marker); + marker.setId(id); + mAnnotations.put(id, marker); + markers.add(marker); + } + mMarkerViewManager.invalidateViewMarkersInVisibleRegion(); + return markers; + } + /** *

* Adds multiple markers to this map. diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java index 8b1aa42d3..8e2766c07 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java @@ -129,15 +129,14 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView for (int i = 0; i < amount; i++) { randomIndex = random.nextInt(mLocations.size()); LatLng latLng = mLocations.get(randomIndex); - markerOptionsList.add(new MarkerViewOptions() + MarkerViewOptions markerOptions = new MarkerViewOptions() .position(latLng) .icon(icon) .title(String.valueOf(i)) - .snippet(formatter.format(latLng.getLatitude()) + ", " + formatter.format(latLng.getLongitude()))); - } - for (MarkerViewOptions markerViewOptions : markerOptionsList) { - mapboxMap.addMarker(markerViewOptions); + .snippet(formatter.format(latLng.getLatitude()) + ", " + formatter.format(latLng.getLongitude())); + markerOptionsList.add(markerOptions); } + mapboxMap.addMarkerViews(markerOptionsList); } private void showGlMarkers(int amount) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml index b72dd9a2a..ed58d9ce8 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/values/strings.xml @@ -167,6 +167,7 @@ 10 100 + 500 1000 10000