diff options
author | Tobrun <tobrun.van.nuland@gmail.com> | 2016-12-14 22:09:30 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2016-12-14 22:09:30 +0100 |
commit | 05c693555606d9184f0cb7cc24129353800dd21f (patch) | |
tree | 17372a24a055f3b6a8279d434f6d0f22d3f03fd9 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java | |
parent | f74de6731591ef11a75612b31f62877deb9f833c (diff) | |
download | qtlocation-mapboxgl-05c693555606d9184f0cb7cc24129353800dd21f.tar.gz |
[android] - add OnMarkerView add callback (#7429)
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 | 33 |
1 files changed, 20 insertions, 13 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 40f4ff118e..eb90ae764b 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 @@ -20,6 +20,7 @@ import com.mapbox.mapboxsdk.annotations.PolylineOptions; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; /** @@ -32,7 +33,7 @@ import java.util.List; * Exposes convenience methods to add/remove/update all subtypes of annotations found in com.mapbox.mapboxsdk.annotations. * </p> */ -class AnnotationManager implements MapView.OnMapChangedListener { +class AnnotationManager { private final NativeMapView nativeMapView; private final MapView mapView; @@ -44,8 +45,8 @@ class AnnotationManager implements MapView.OnMapChangedListener { private MapboxMap mapboxMap; + private HashMap<MarkerView, MarkerViewManager.OnMarkerViewAddedListener> markerMap = new HashMap<>(); private MapboxMap.OnMarkerClickListener onMarkerClickListener; - private boolean isWaitingForRenderInvoke; AnnotationManager(NativeMapView view, MapView mapView, MarkerViewManager markerViewManager) { this.nativeMapView = view; @@ -54,7 +55,7 @@ class AnnotationManager implements MapView.OnMapChangedListener { this.markerViewManager = markerViewManager; if (view != null) { // null checking needed for unit tests - view.addOnMapChangedListener(this); + nativeMapView.addOnMapChangedListener(markerViewManager); } } @@ -66,14 +67,6 @@ class AnnotationManager implements MapView.OnMapChangedListener { return this; } - @Override - public void onMapChanged(@MapView.MapChange int change) { - if (isWaitingForRenderInvoke && change == MapView.DID_FINISH_RENDERING_FRAME_FULLY_RENDERED) { - isWaitingForRenderInvoke = false; - markerViewManager.invalidateViewMarkersInVisibleRegion(); - } - } - // // Annotations // @@ -218,7 +211,6 @@ class AnnotationManager implements MapView.OnMapChangedListener { } MarkerView addMarker(@NonNull BaseMarkerViewOptions markerOptions, @NonNull MapboxMap mapboxMap) { - isWaitingForRenderInvoke = true; MarkerView marker = prepareViewMarker(markerOptions); marker.setMapboxMap(mapboxMap); long id = nativeMapView.addMarker(marker); @@ -227,13 +219,28 @@ class AnnotationManager implements MapView.OnMapChangedListener { return marker; } + public MarkerView addMarker(@NonNull BaseMarkerViewOptions markerOptions, @NonNull MapboxMap mapboxMap, final MarkerViewManager.OnMarkerViewAddedListener onMarkerViewAddedListener) { + final MarkerView marker = prepareViewMarker(markerOptions); + + // add marker to map + marker.setMapboxMap(mapboxMap); + long id = nativeMapView.addMarker(marker); + marker.setId(id); + annotations.put(id, marker); + + markerViewManager.addOnMarkerViewAddedListener(marker, onMarkerViewAddedListener); + markerViewManager.setWaitingForRenderInvoke(true); + return marker; + } + + List<MarkerView> addMarkerViews(@NonNull List<? extends BaseMarkerViewOptions> markerViewOptions, @NonNull MapboxMap mapboxMap) { List<MarkerView> markers = new ArrayList<>(); for (BaseMarkerViewOptions markerViewOption : markerViewOptions) { // if last marker if (markerViewOptions.indexOf(markerViewOption) == markerViewOptions.size() - 1) { // get notified when render occurs to invalidate and draw MarkerViews - isWaitingForRenderInvoke = true; + markerViewManager.setWaitingForRenderInvoke(true); } // add marker to map MarkerView marker = prepareViewMarker(markerViewOption); |