summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java
diff options
context:
space:
mode:
authorTobrun <tobrun.van.nuland@gmail.com>2016-12-14 22:09:30 +0100
committerGitHub <noreply@github.com>2016-12-14 22:09:30 +0100
commit05c693555606d9184f0cb7cc24129353800dd21f (patch)
tree17372a24a055f3b6a8279d434f6d0f22d3f03fd9 /platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AnnotationManager.java
parentf74de6731591ef11a75612b31f62877deb9f833c (diff)
downloadqtlocation-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.java33
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);