diff --git a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java index 4c7b2ae2..46a03d5e 100644 --- a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java +++ b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/AnnotationManager.java @@ -136,7 +136,7 @@ public T create(S options) { T t = options.build(currentId, this); annotations.put(t.getId(), t); currentId++; - updateSource(); + internalUpdateSource(); return t; } @@ -155,7 +155,7 @@ public List create(List optionsList) { annotations.put(annotation.getId(), annotation); currentId++; } - updateSource(); + internalUpdateSource(); return annotationList; } @@ -167,7 +167,8 @@ public List create(List optionsList) { @UiThread public void delete(T annotation) { annotations.remove(annotation.getId()); - updateSource(); + draggableAnnotationController.onAnnotationUpdated(annotation); + internalUpdateSource(); } /** @@ -179,8 +180,9 @@ public void delete(T annotation) { public void delete(List annotationList) { for (T annotation : annotationList) { annotations.remove(annotation.getId()); + draggableAnnotationController.onAnnotationUpdated(annotation); } - updateSource(); + internalUpdateSource(); } /** @@ -201,7 +203,8 @@ public void deleteAll() { public void update(T annotation) { if (annotations.containsValue(annotation)) { annotations.put(annotation.getId(), annotation); - updateSource(); + draggableAnnotationController.onAnnotationUpdated(annotation); + internalUpdateSource(); } else { Logger.e(TAG, "Can't update annotation: " + annotation.toString() @@ -218,8 +221,9 @@ public void update(T annotation) { public void update(List annotationList) { for (T annotation : annotationList) { annotations.put(annotation.getId(), annotation); + draggableAnnotationController.onAnnotationUpdated(annotation); } - updateSource(); + internalUpdateSource(); } /** diff --git a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/DraggableAnnotationController.java b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/DraggableAnnotationController.java index c09e3aaa..69a7ddb6 100644 --- a/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/DraggableAnnotationController.java +++ b/plugin-annotation/src/main/java/com/mapbox/mapboxsdk/plugins/annotation/DraggableAnnotationController.java @@ -97,6 +97,12 @@ void removeAnnotationManager(AnnotationManager annotationManager) { } } + void onAnnotationUpdated(Annotation annotation) { + if (annotation == draggedAnnotation) { + stopDragging(draggedAnnotation, draggedAnnotationManager); + } + } + void onSourceUpdated() { stopDragging(draggedAnnotation, draggedAnnotationManager); }