diff options
author | Pablo Guardiola <guardiola31337@gmail.com> | 2017-07-25 13:01:31 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-25 13:01:31 +0200 |
commit | 0e0536a8d7203fbf3883c0e148cb509188d2b496 (patch) | |
tree | 170158509673dfcccb6e98f3a03b64e6cc2c8598 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java | |
parent | de14815a29d8a2b909ef81f210b9671fe51c13c6 (diff) | |
download | qtlocation-mapboxgl-0e0536a8d7203fbf3883c0e148cb509188d2b496.tar.gz |
[android] fix added to map checks because LongSparseArray#indexOfKey could return a negative number when the specified key is not mapped (#9602)
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java index 22e5cf4322..960f71ca13 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java @@ -181,6 +181,10 @@ class AnnotationManager { } void updateMarker(@NonNull Marker updatedMarker, @NonNull MapboxMap mapboxMap) { + if (!isAddedToMap(updatedMarker)) { + logNonAdded(updatedMarker); + return; + } markers.update(updatedMarker, mapboxMap); } @@ -230,6 +234,10 @@ class AnnotationManager { } void updatePolygon(Polygon polygon) { + if (!isAddedToMap(polygon)) { + logNonAdded(polygon); + return; + } polygons.update(polygon); } @@ -256,6 +264,10 @@ class AnnotationManager { } void updatePolyline(Polyline polyline) { + if (!isAddedToMap(polyline)) { + logNonAdded(polyline); + return; + } polylines.update(polyline); } @@ -365,6 +377,14 @@ class AnnotationManager { } } + private boolean isAddedToMap(Annotation annotation) { + return annotation != null && annotation.getId() != -1 && annotationsArray.indexOfKey(annotation.getId()) > -1; + } + + private void logNonAdded(Annotation annotation) { + Timber.w("Attempting to update non-added %s with value %s", annotation.getClass().getCanonicalName(), annotation); + } + // // Click event // |