diff options
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps')
8 files changed, 30 insertions, 503 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 958ceb352c..8875e7164b 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 @@ -12,10 +12,7 @@ import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.R; import com.mapbox.mapboxsdk.annotations.Annotation; import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions; -import com.mapbox.mapboxsdk.annotations.BaseMarkerViewOptions; import com.mapbox.mapboxsdk.annotations.Marker; -import com.mapbox.mapboxsdk.annotations.MarkerView; -import com.mapbox.mapboxsdk.annotations.MarkerViewManager; import com.mapbox.mapboxsdk.annotations.Polygon; import com.mapbox.mapboxsdk.annotations.PolygonOptions; import com.mapbox.mapboxsdk.annotations.Polyline; @@ -29,7 +26,7 @@ import java.util.List; * Responsible for managing and tracking state of Annotations linked to Map. All events related to * annotations that occur on {@link MapboxMap} are forwarded to this class. * <p> - * Responsible for referencing {@link InfoWindowManager} and {@link MarkerViewManager}. + * Responsible for referencing {@link InfoWindowManager}. * </p> * <p> * Exposes convenience methods to add/remove/update all subtypes of annotations found in @@ -42,11 +39,10 @@ class AnnotationManager { private static final long NO_ANNOTATION_ID = -1; - @Nullable + @NonNull private final MapView mapView; private final IconManager iconManager; private final InfoWindowManager infoWindowManager = new InfoWindowManager(); - private final MarkerViewManager markerViewManager; private final LongSparseArray<Annotation> annotationsArray; private final List<Marker> selectedMarkers = new ArrayList<>(); @@ -64,22 +60,17 @@ class AnnotationManager { private Polygons polygons; private Polylines polylines; - AnnotationManager(@Nullable MapView mapView, LongSparseArray<Annotation> annotationsArray, - MarkerViewManager markerViewManager, IconManager iconManager, Annotations annotations, - Markers markers, Polygons polygons, Polylines polylines, ShapeAnnotations shapeAnnotations) { + AnnotationManager(@NonNull MapView mapView, LongSparseArray<Annotation> annotationsArray, + IconManager iconManager, Annotations annotations, Markers markers, Polygons polygons, + Polylines polylines, ShapeAnnotations shapeAnnotations) { this.mapView = mapView; this.annotationsArray = annotationsArray; - this.markerViewManager = markerViewManager; this.iconManager = iconManager; this.annotations = annotations; this.markers = markers; this.polygons = polygons; this.polylines = polylines; this.shapeAnnotations = shapeAnnotations; - if (mapView != null) { - // null checking needed for unit tests - mapView.addOnDidFinishRenderingFrameListener(markerViewManager); - } } // TODO refactor MapboxMap out for Projection and Transform @@ -87,12 +78,10 @@ class AnnotationManager { @NonNull AnnotationManager bind(MapboxMap mapboxMap) { this.mapboxMap = mapboxMap; - this.markerViewManager.bind(mapboxMap); return this; } void update() { - markerViewManager.update(); infoWindowManager.update(); } @@ -119,13 +108,8 @@ class AnnotationManager { if (selectedMarkers.contains(marker)) { selectedMarkers.remove(marker); } - - if (marker instanceof MarkerView) { - markerViewManager.removeMarkerView((MarkerView) marker); - } else { - // do icon cleanup - iconManager.iconCleanup(marker.getIcon()); - } + // do icon cleanup + iconManager.iconCleanup(marker.getIcon()); } annotations.removeBy(annotation); } @@ -138,12 +122,7 @@ class AnnotationManager { if (selectedMarkers.contains(marker)) { selectedMarkers.remove(marker); } - - if (marker instanceof MarkerView) { - markerViewManager.removeMarkerView((MarkerView) marker); - } else { - iconManager.iconCleanup(marker.getIcon()); - } + iconManager.iconCleanup(marker.getIcon()); } } annotations.removeBy(annotationList); @@ -160,11 +139,7 @@ class AnnotationManager { if (annotation instanceof Marker) { Marker marker = (Marker) annotation; marker.hideInfoWindow(); - if (marker instanceof MarkerView) { - markerViewManager.removeMarkerView((MarkerView) marker); - } else { - iconManager.iconCleanup(marker.getIcon()); - } + iconManager.iconCleanup(marker.getIcon()); } } annotations.removeAll(); @@ -199,20 +174,6 @@ class AnnotationManager { return markers.obtainAllIn(rectangle); } - MarkerView addMarker(@NonNull BaseMarkerViewOptions markerOptions, @NonNull MapboxMap mapboxMap, - @Nullable MarkerViewManager.OnMarkerViewAddedListener onMarkerViewAddedListener) { - return markers.addViewBy(markerOptions, mapboxMap, onMarkerViewAddedListener); - } - - List<MarkerView> addMarkerViews(@NonNull List<? extends BaseMarkerViewOptions> markerViewOptions, - @NonNull MapboxMap mapboxMap) { - return markers.addViewsBy(markerViewOptions, mapboxMap); - } - - List<MarkerView> getMarkerViewsInRect(@NonNull RectF rectangle) { - return markers.obtainViewsIn(rectangle); - } - void reloadMarkers() { markers.reload(); } @@ -288,11 +249,6 @@ class AnnotationManager { deselectMarkers(); } - if (marker instanceof MarkerView) { - markerViewManager.select((MarkerView) marker, false); - markerViewManager.ensureInfoWindowOffset((MarkerView) marker); - } - if (infoWindowManager.isInfoWindowValidForMarker(marker) || infoWindowManager.getInfoWindowAdapter() != null) { infoWindowManager.add(marker.showInfoWindow(mapboxMap, mapView)); } @@ -311,10 +267,6 @@ class AnnotationManager { if (marker.isInfoWindowShown()) { marker.hideInfoWindow(); } - - if (marker instanceof MarkerView) { - markerViewManager.deselect((MarkerView) marker, false); - } } } @@ -330,11 +282,6 @@ class AnnotationManager { if (marker.isInfoWindowShown()) { marker.hideInfoWindow(); } - - if (marker instanceof MarkerView) { - markerViewManager.deselect((MarkerView) marker, false); - } - selectedMarkers.remove(marker); } @@ -348,10 +295,6 @@ class AnnotationManager { return infoWindowManager; } - MarkerViewManager getMarkerViewManager() { - return markerViewManager; - } - void adjustTopOffsetPixels(@NonNull MapboxMap mapboxMap) { int count = annotationsArray.size(); for (int i = 0; i < count; i++) { @@ -433,14 +376,8 @@ class AnnotationManager { } private boolean isClickHandledForMarker(long markerId) { - boolean handledDefaultClick; Marker marker = (Marker) getAnnotation(markerId); - if (marker instanceof MarkerView) { - handledDefaultClick = markerViewManager.onClickMarkerView((MarkerView) marker); - } else { - handledDefaultClick = onClickMarker(marker); - } - + boolean handledDefaultClick = onClickMarker(marker); if (!handledDefaultClick) { toggleMarkerSelectionState(marker); } @@ -481,13 +418,12 @@ class AnnotationManager { private static class MarkerHitResolver { @NonNull - private final MarkerViewManager markerViewManager; - @NonNull private final Projection projection; private final int minimalTouchSize; @Nullable private View view; + private Bitmap bitmap; private int bitmapWidth; private int bitmapHeight; @@ -503,7 +439,6 @@ class AnnotationManager { private long closestMarkerId = NO_ANNOTATION_ID; MarkerHitResolver(@NonNull MapboxMap mapboxMap) { - this.markerViewManager = mapboxMap.getMarkerViewManager(); this.projection = mapboxMap.getProjection(); this.minimalTouchSize = (int) (32 * Mapbox.getApplicationContext().getResources().getDisplayMetrics().density); } @@ -515,20 +450,7 @@ class AnnotationManager { private void resolveForMarkers(MarkerHit markerHit) { for (Marker marker : markerHit.markers) { - if (marker instanceof MarkerView) { - resolveForMarkerView(markerHit, (MarkerView) marker); - } else { - resolveForMarker(markerHit, marker); - } - } - } - - private void resolveForMarkerView(@NonNull MarkerHit markerHit, @NonNull MarkerView markerView) { - view = markerViewManager.getView(markerView); - if (view != null) { - view.getHitRect(hitRectView); - hitRectMarker = new RectF(hitRectView); - hitTestMarker(markerHit, markerView, hitRectMarker); + resolveForMarker(markerHit, marker); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/IconManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/IconManager.java index 7aca93fe2e..28f594c62e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/IconManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/IconManager.java @@ -7,7 +7,6 @@ import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.annotations.Icon; import com.mapbox.mapboxsdk.annotations.IconFactory; import com.mapbox.mapboxsdk.annotations.Marker; -import com.mapbox.mapboxsdk.annotations.MarkerView; import java.util.HashMap; import java.util.List; @@ -16,8 +15,7 @@ import java.util.Map; /** * Responsible for managing icons added to the Map. * <p> - * Maintains a {@link List} of {@link Icon} and is responsible for initialising default markers and - * setting up {@link MarkerView} annotation ghosting. + * Maintains a {@link List} of {@link Icon} and is responsible for initialising default markers. * </p> * <p> * Keep track of icons added and the resulting average icon size. This is used internally by our @@ -34,15 +32,12 @@ class IconManager { IconManager(NativeMapView nativeMapView) { this.nativeMapView = nativeMapView; - // load transparent icon for MarkerView to trace actual markers, see #6352 - loadIcon(IconFactory.recreate(IconFactory.ICON_MARKERVIEW_ID, IconFactory.ICON_MARKERVIEW_BITMAP)); } Icon loadIconForMarker(@NonNull Marker marker) { Icon icon = marker.getIcon(); if (icon == null) { // TODO replace with anchor implementation, we are faking an anchor by adding extra pixels and diving height by 2 - // TODO we can move this code afterwards to getIcon as with MarkerView.getIcon icon = loadDefaultIconForMarker(marker); } else { updateHighestIconSize(icon); @@ -51,13 +46,6 @@ class IconManager { return icon; } - void loadIconForMarkerView(@NonNull MarkerView marker) { - Icon icon = marker.getIcon(); - Bitmap bitmap = icon.getBitmap(); - updateHighestIconSize(bitmap); - addIcon(icon, false); - } - int getTopOffsetPixelsForIcon(@NonNull Icon icon) { return (int) (nativeMapView.getTopOffsetPixelsForAnnotationSymbol(icon.getId()) * nativeMapView.getPixelRatio()); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 8d1592046f..676fd25505 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -15,7 +15,6 @@ import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.TextureView; import android.view.View; -import android.view.ViewGroup; import android.view.KeyEvent; import android.view.MotionEvent; import android.widget.FrameLayout; @@ -25,7 +24,6 @@ import com.mapbox.mapboxsdk.MapStrictMode; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.R; import com.mapbox.mapboxsdk.annotations.Annotation; -import com.mapbox.mapboxsdk.annotations.MarkerViewManager; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.constants.MapboxConstants; @@ -157,17 +155,15 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { Projection proj = new Projection(nativeMapView); UiSettings uiSettings = new UiSettings(proj, focalInvalidator, compassView, attrView, logoView, getPixelRatio()); LongSparseArray<Annotation> annotationsArray = new LongSparseArray<>(); - MarkerViewManager markerViewManager = new MarkerViewManager((ViewGroup) findViewById(R.id.markerViewContainer)); IconManager iconManager = new IconManager(nativeMapView); Annotations annotations = new AnnotationContainer(nativeMapView, annotationsArray); - Markers markers = new MarkerContainer(nativeMapView, this, annotationsArray, iconManager, markerViewManager); + Markers markers = new MarkerContainer(nativeMapView, annotationsArray, iconManager); Polygons polygons = new PolygonContainer(nativeMapView, annotationsArray); Polylines polylines = new PolylineContainer(nativeMapView, annotationsArray); ShapeAnnotations shapeAnnotations = new ShapeAnnotationContainer(nativeMapView, annotationsArray); - AnnotationManager annotationManager = new AnnotationManager(this, annotationsArray, - markerViewManager, iconManager, annotations, markers, polygons, polylines, shapeAnnotations); - Transform transform = new Transform(this, nativeMapView, annotationManager.getMarkerViewManager(), - cameraChangeDispatcher); + AnnotationManager annotationManager = new AnnotationManager(this, annotationsArray, iconManager, + annotations, markers, polygons, polylines, shapeAnnotations); + Transform transform = new Transform(this, nativeMapView, cameraChangeDispatcher); // MapboxMap mapboxMap = new MapboxMap(nativeMapView, transform, uiSettings, proj, registerTouchListener, @@ -1159,7 +1155,6 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { // Style has loaded before the drawing surface has been initialized, delivering OnMapReady mapboxMap.onPreMapReady(); onMapReady(); - mapboxMap.onPostMapReady(); } } @@ -1212,7 +1207,6 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { initialLoad = false; mapboxMap.onPreMapReady(); onMapReady(); - mapboxMap.onPostMapReady(); } else { mapboxMap.onFinishLoadingStyle(); } 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 f986d9d96c..58fc66407f 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 @@ -11,10 +11,8 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.Size; import android.support.annotation.UiThread; -import android.support.v4.util.Pools; import android.text.TextUtils; import android.view.View; -import android.view.ViewGroup; import com.mapbox.android.gestures.AndroidGesturesManager; import com.mapbox.android.gestures.MoveGestureDetector; @@ -26,11 +24,8 @@ import com.mapbox.geojson.Geometry; import com.mapbox.mapboxsdk.MapStrictMode; import com.mapbox.mapboxsdk.annotations.Annotation; import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions; -import com.mapbox.mapboxsdk.annotations.BaseMarkerViewOptions; import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerOptions; -import com.mapbox.mapboxsdk.annotations.MarkerView; -import com.mapbox.mapboxsdk.annotations.MarkerViewManager; import com.mapbox.mapboxsdk.annotations.Polygon; import com.mapbox.mapboxsdk.annotations.PolygonOptions; import com.mapbox.mapboxsdk.annotations.Polyline; @@ -172,23 +167,12 @@ public final class MapboxMap { * Called before the OnMapReadyCallback is invoked. */ void onPreMapReady() { - invalidateCameraPosition(); + transform.invalidateCameraPosition(); annotationManager.reloadMarkers(); annotationManager.adjustTopOffsetPixels(this); } /** - * Called when the OnMapReadyCallback has finished executing. - * <p> - * Invalidation of the camera position is required to update the added components in - * OnMapReadyCallback with the correct transformation. - * </p> - */ - void onPostMapReady() { - invalidateCameraPosition(); - } - - /** * Called when the map will start loading style. */ void onStartLoadingMap() { @@ -858,16 +842,6 @@ public final class MapboxMap { } /** - * Invalidates the current camera position by reconstructing it from mbgl - */ - private void invalidateCameraPosition() { - CameraPosition cameraPosition = transform.invalidateCameraPosition(); - if (cameraPosition != null) { - transform.updateCameraPosition(cameraPosition); - } - } - - /** * Scrolls the camera over the map, shifting the center of view by the specified number of pixels in the x and y * directions. * @@ -1187,85 +1161,6 @@ public final class MapboxMap { /** * <p> - * Adds a marker to this map. - * </p> - * The marker's icon is rendered on the map at the location {@code Marker.position}. - * If {@code Marker.title} is defined, the map shows an info box with the marker's title and snippet. - * - * @param markerOptions A marker options object that defines how to render the marker - * @return The {@code Marker} that was added to the map - * @deprecated Use a {@link com.mapbox.mapboxsdk.style.layers.SymbolLayer} instead. An example of converting Android - * SDK views to be used as a symbol see https://github - * .com/mapbox/mapbox-gl-native/blob/68f32bc104422207c64da8d90e8411b138d87f04/platform/android - * /MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java - */ - @NonNull - @Deprecated - public MarkerView addMarker(@NonNull BaseMarkerViewOptions markerOptions) { - return annotationManager.addMarker(markerOptions, this, null); - } - - /** - * <p> - * Adds a marker to this map. - * </p> - * The marker's icon is rendered on the map at the location {@code Marker.position}. - * If {@code Marker.title} is defined, the map shows an info box with the marker's title and snippet. - * - * @param markerOptions A marker options object that defines how to render the marker - * @param onMarkerViewAddedListener Callback invoked when the View has been added to the map - * @return The {@code Marker} that was added to the map - * @deprecated Use a {@link com.mapbox.mapboxsdk.style.layers.SymbolLayer} instead. An example of converting Android - * SDK views to be used as a symbol see https://github - * .com/mapbox/mapbox-gl-native/blob/68f32bc104422207c64da8d90e8411b138d87f04/platform/android - * /MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java - */ - @Deprecated - @NonNull - public MarkerView addMarker(@NonNull BaseMarkerViewOptions markerOptions, - final MarkerViewManager.OnMarkerViewAddedListener onMarkerViewAddedListener) { - return annotationManager.addMarker(markerOptions, this, onMarkerViewAddedListener); - } - - /** - * Adds multiple markersViews to this map. - * <p> - * The marker's icon is rendered on the map at the location {@code Marker.position}. - * If {@code Marker.title} is defined, the map shows an info box with the marker's title and snippet. - * </p> - * - * @param markerViewOptions A list of markerView options objects that defines how to render the markers - * @return A list of the {@code MarkerView}s that were added to the map - * @deprecated Use a {@link com.mapbox.mapboxsdk.style.layers.SymbolLayer} instead. An example of converting Android - * SDK views to be used as a symbol see https://github - * .com/mapbox/mapbox-gl-native/blob/68f32bc104422207c64da8d90e8411b138d87f04/platform/android - * /MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java - */ - @NonNull - @Deprecated - public List<MarkerView> addMarkerViews(@NonNull List<? extends - BaseMarkerViewOptions> markerViewOptions) { - return annotationManager.addMarkerViews(markerViewOptions, this); - } - - /** - * Returns markerViews found inside of a rectangle on this map. - * - * @param rect the rectangular area on the map to query for markerViews - * @return A list of the markerViews that were found in the rectangle - * @deprecated Use a {@link com.mapbox.mapboxsdk.style.layers.SymbolLayer} instead. An example of converting Android - * SDK views to be used as a symbol see https://github - * .com/mapbox/mapbox-gl-native/blob/68f32bc104422207c64da8d90e8411b138d87f04/platform/android - * /MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java - */ - @NonNull - @Deprecated - public List<MarkerView> getMarkerViewsInRect(@NonNull RectF rect) { - return annotationManager.getMarkerViewsInRect(rect); - } - - /** - * <p> * Adds multiple markers to this map. * </p> * The marker's icon is rendered on the map at the location {@code Marker.position}. @@ -1559,16 +1454,6 @@ public final class MapboxMap { return annotationManager.getSelectedMarkers(); } - /** - * Get the MarkerViewManager associated to the MapView. - * - * @return the associated MarkerViewManager - */ - @NonNull - public MarkerViewManager getMarkerViewManager() { - return annotationManager.getMarkerViewManager(); - } - // // InfoWindow // @@ -2544,145 +2429,6 @@ public final class MapboxMap { } /** - * Interface definition for a callback to be invoked when an MarkerView will be shown. - * - * @param <U> the instance type of MarkerView - * @deprecated Use a {@link com.mapbox.mapboxsdk.style.layers.SymbolLayer} instead. An example of converting Android - * SDK views to be used as a symbol see https://github - * .com/mapbox/mapbox-gl-native/blob/68f32bc104422207c64da8d90e8411b138d87f04/platform/android - * /MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolGeneratorActivity.java - */ - @Deprecated - public abstract static class MarkerViewAdapter<U extends MarkerView> { - - private Context context; - private final Class<U> persistentClass; - @NonNull - private final Pools.SimplePool<View> viewReusePool; - - /** - * Create an instance of MarkerViewAdapter. - * - * @param context the context associated to a MapView - */ - public MarkerViewAdapter(Context context, Class<U> persistentClass) { - this.context = context; - this.persistentClass = persistentClass; - viewReusePool = new Pools.SimplePool<>(10000); - } - - /** - * Called when an MarkerView will be added to the MapView. - * - * @param marker the model representing the MarkerView - * @param convertView the reusable view - * @param parent the parent ViewGroup of the convertview - * @return the View that is adapted to the contents of MarkerView - */ - @Nullable - public abstract View getView(@NonNull U marker, @Nullable View convertView, @NonNull ViewGroup parent); - - /** - * Called when an MarkerView is removed from the MapView or the View object is going to be reused. - * <p> - * This method should be used to reset an animated view back to it's original state for view reuse. - * </p> - * <p> - * Returning true indicates you want to the view reuse to be handled automatically. - * Returning false indicates you want to perform an animation and you are required calling - * {@link #releaseView(View)} yourself. - * </p> - * - * @param marker the model representing the MarkerView - * @param convertView the reusable view - * @return true if you want reuse to occur automatically, false if you want to manage this yourself. - */ - public boolean prepareViewForReuse(@NonNull MarkerView marker, @NonNull View convertView) { - return true; - } - - /** - * Called when a MarkerView is selected from the MapView. - * <p> - * Returning true from this method indicates you want to move the MarkerView to the selected state. - * Returning false indicates you want to animate the View first an manually select the MarkerView when appropriate. - * </p> - * - * @param marker the model representing the MarkerView - * @param convertView the reusable view - * @param reselectionFromRecycling indicates if the onSelect callback is the initial selection - * callback or that selection occurs due to recreation of selected marker - * @return true if you want to select the Marker immediately, false if you want to manage this yourself. - */ - public boolean onSelect(@NonNull U marker, @NonNull View convertView, boolean reselectionFromRecycling) { - return true; - } - - /** - * Called when a MarkerView is deselected from the MapView. - * - * @param marker the model representing the MarkerView - * @param convertView the reusable view - */ - public void onDeselect(@NonNull U marker, @NonNull View convertView) { - } - - /** - * Returns the generic type of the used MarkerView. - * - * @return the generic type - */ - public final Class<U> getMarkerClass() { - return persistentClass; - } - - /** - * Returns the pool used to store reusable Views. - * - * @return the pool associated to this adapter - */ - @NonNull - public final Pools.SimplePool<View> getViewReusePool() { - return viewReusePool; - } - - /** - * Returns the context associated to the hosting MapView. - * - * @return the context used - */ - public final Context getContext() { - return context; - } - - /** - * Release a View to the ViewPool. - * - * @param view the view to be released - */ - public final void releaseView(View view) { - view.setVisibility(View.GONE); - viewReusePool.release(view); - } - } - - /** - * Interface definition for a callback to be invoked when the user clicks on a MarkerView. - */ - public interface OnMarkerViewClickListener { - - /** - * Called when the user clicks on a MarkerView. - * - * @param marker the MarkerView associated to the clicked View - * @param view the clicked View - * @param adapter the adapter used to adapt the MarkerView to the View - * @return If true the listener has consumed the event and the info window will not be shown - */ - boolean onMarkerClick(@NonNull Marker marker, @NonNull View view, @NonNull MarkerViewAdapter adapter); - } - - /** * Interface definition for a callback to be invoked when a task is complete or cancelled. */ public interface CancelableCallback { diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MarkerContainer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MarkerContainer.java index 8b9ff78aa3..26ac74904a 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MarkerContainer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MarkerContainer.java @@ -1,19 +1,13 @@ package com.mapbox.mapboxsdk.maps; - import android.graphics.RectF; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.support.v4.util.LongSparseArray; import com.mapbox.mapboxsdk.annotations.Annotation; import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions; -import com.mapbox.mapboxsdk.annotations.BaseMarkerViewOptions; import com.mapbox.mapboxsdk.annotations.Icon; -import com.mapbox.mapboxsdk.annotations.IconFactory; import com.mapbox.mapboxsdk.annotations.Marker; -import com.mapbox.mapboxsdk.annotations.MarkerView; -import com.mapbox.mapboxsdk.annotations.MarkerViewManager; import java.util.ArrayList; import java.util.List; @@ -24,18 +18,13 @@ import java.util.List; class MarkerContainer implements Markers { private final NativeMapView nativeMapView; - private final MapView mapView; private final LongSparseArray<Annotation> annotations; private final IconManager iconManager; - private final MarkerViewManager markerViewManager; - MarkerContainer(NativeMapView nativeMapView, MapView mapView, LongSparseArray<Annotation> annotations, IconManager - iconManager, MarkerViewManager markerViewManager) { + MarkerContainer(NativeMapView nativeMapView, LongSparseArray<Annotation> annotations, IconManager iconManager) { this.nativeMapView = nativeMapView; - this.mapView = mapView; this.annotations = annotations; this.iconManager = iconManager; - this.markerViewManager = markerViewManager; } @Override @@ -121,78 +110,6 @@ class MarkerContainer implements Markers { } @Override - public MarkerView addViewBy(@NonNull BaseMarkerViewOptions markerOptions, @NonNull MapboxMap mapboxMap, @Nullable - 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); - - if (onMarkerViewAddedListener != null) { - markerViewManager.addOnMarkerViewAddedListener(marker, onMarkerViewAddedListener); - } - markerViewManager.setEnabled(true); - markerViewManager.setWaitingForRenderInvoke(true); - return marker; - } - - @NonNull - @Override - public List<MarkerView> addViewsBy(@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 - markerViewManager.setWaitingForRenderInvoke(true); - } - // add marker to map - MarkerView marker = prepareViewMarker(markerViewOption); - marker.setMapboxMap(mapboxMap); - long id = nativeMapView.addMarker(marker); - marker.setId(id); - annotations.put(id, marker); - markers.add(marker); - } - markerViewManager.setEnabled(true); - markerViewManager.update(); - return markers; - } - - @NonNull - @Override - public List<MarkerView> obtainViewsIn(@NonNull RectF rectangle) { - float pixelRatio = nativeMapView.getPixelRatio(); - RectF rect = new RectF(rectangle.left / pixelRatio, - rectangle.top / pixelRatio, - rectangle.right / pixelRatio, - rectangle.bottom / pixelRatio); - - long[] ids = nativeMapView.queryPointAnnotations(rect); - - List<Long> idsList = new ArrayList<>(ids.length); - for (long id : ids) { - idsList.add(id); - } - - List<MarkerView> annotations = new ArrayList<>(ids.length); - List<Annotation> annotationList = obtainAnnotations(); - int count = annotationList.size(); - for (int i = 0; i < count; i++) { - Annotation annotation = annotationList.get(i); - if (annotation instanceof MarkerView && idsList.contains(annotation.getId())) { - annotations.add((MarkerView) annotation); - } - } - - return new ArrayList<>(annotations); - } - - @Override public void reload() { iconManager.reloadIcons(); int count = annotations.size(); @@ -215,9 +132,7 @@ class MarkerContainer implements Markers { } private void ensureIconLoaded(Marker marker, @NonNull MapboxMap mapboxMap) { - if (!(marker instanceof MarkerView)) { - iconManager.ensureIconLoaded(marker, mapboxMap); - } + iconManager.ensureIconLoaded(marker, mapboxMap); } @NonNull @@ -228,15 +143,4 @@ class MarkerContainer implements Markers { } return annotations; } - - private MarkerView prepareViewMarker(BaseMarkerViewOptions markerViewOptions) { - MarkerView marker = markerViewOptions.getMarker(); - Icon icon = markerViewOptions.getIcon(); - if (icon == null) { - icon = IconFactory.getInstance(mapView.getContext()).defaultMarkerView(); - } - iconManager.loadIconForMarkerView(marker); - marker.setIcon(icon); - return marker; - } }
\ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Markers.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Markers.java index d85f388d09..62859d58a8 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Markers.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Markers.java @@ -1,15 +1,10 @@ package com.mapbox.mapboxsdk.maps; - import android.graphics.RectF; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import com.mapbox.mapboxsdk.annotations.BaseMarkerOptions; -import com.mapbox.mapboxsdk.annotations.BaseMarkerViewOptions; import com.mapbox.mapboxsdk.annotations.Marker; -import com.mapbox.mapboxsdk.annotations.MarkerView; -import com.mapbox.mapboxsdk.annotations.MarkerViewManager; import java.util.List; @@ -28,13 +23,5 @@ interface Markers { @NonNull List<Marker> obtainAllIn(@NonNull RectF rectangle); - MarkerView addViewBy(@NonNull BaseMarkerViewOptions markerOptions, @NonNull MapboxMap mapboxMap, - @Nullable MarkerViewManager.OnMarkerViewAddedListener onMarkerViewAddedListener); - - List<MarkerView> addViewsBy(@NonNull List<? extends BaseMarkerViewOptions> markerViewOptions, - @NonNull MapboxMap mapboxMap); - - List<MarkerView> obtainViewsIn(@NonNull RectF rectangle); - void reload(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java index 457353d4b9..0ba40642f5 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java @@ -5,7 +5,6 @@ import android.os.Handler; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.UiThread; -import com.mapbox.mapboxsdk.annotations.MarkerViewManager; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdate; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -27,14 +26,12 @@ final class Transform implements MapView.OnCameraDidChangeListener { private final NativeMapView nativeMapView; private final MapView mapView; - private final MarkerViewManager markerViewManager; private final Handler handler = new Handler(); @Nullable private CameraPosition cameraPosition; @Nullable private MapboxMap.CancelableCallback cameraCancelableCallback; - private CameraChangeDispatcher cameraChangeDispatcher; private final MapView.OnCameraDidChangeListener moveByChangeListener = new MapView.OnCameraDidChangeListener() { @@ -47,11 +44,9 @@ final class Transform implements MapView.OnCameraDidChangeListener { } }; - Transform(MapView mapView, NativeMapView nativeMapView, MarkerViewManager markerViewManager, - CameraChangeDispatcher cameraChangeDispatcher) { + Transform(MapView mapView, NativeMapView nativeMapView, CameraChangeDispatcher cameraChangeDispatcher) { this.mapView = mapView; this.nativeMapView = nativeMapView; - this.markerViewManager = markerViewManager; this.cameraChangeDispatcher = cameraChangeDispatcher; } @@ -77,15 +72,10 @@ final class Transform implements MapView.OnCameraDidChangeListener { return cameraPosition; } - @UiThread - void updateCameraPosition(@NonNull CameraPosition position) { - markerViewManager.setTilt((float) position.tilt); - } - @Override public void onCameraDidChange(boolean animated) { if (animated) { - updateCameraPosition(invalidateCameraPosition()); + invalidateCameraPosition(); if (cameraCancelableCallback != null) { handler.post(new Runnable() { @Override @@ -170,20 +160,11 @@ final class Transform implements MapView.OnCameraDidChangeListener { cameraChangeDispatcher.onCameraMove(); } - if (isComponentUpdateRequired(cameraPosition)) { - updateCameraPosition(cameraPosition); - } - this.cameraPosition = cameraPosition; } return cameraPosition; } - private boolean isComponentUpdateRequired(@NonNull CameraPosition cameraPosition) { - return this.cameraPosition != null && (this.cameraPosition.tilt != cameraPosition.tilt - || this.cameraPosition.bearing != cameraPosition.bearing); - } - void cancelTransitions() { // notify user about cancel cameraChangeDispatcher.onCameraMoveCanceled(); @@ -279,7 +260,6 @@ final class Transform implements MapView.OnCameraDidChangeListener { } void setTilt(Double pitch) { - markerViewManager.setTilt(pitch.floatValue()); nativeMapView.setPitch(pitch, 0); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java index 0c529aa464..9617f94fce 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/renderer/MapRenderer.java @@ -5,6 +5,7 @@ import android.support.annotation.CallSuper; import android.support.annotation.Keep; import android.support.annotation.NonNull; +import com.mapbox.mapboxsdk.log.Logger; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.storage.FileSource; @@ -21,6 +22,8 @@ import javax.microedition.khronos.opengles.GL10; @Keep public abstract class MapRenderer implements MapRendererScheduler { + private static final String TAG = "Mbgl-MapRenderer"; + // Holds the pointer to the native peer after initialisation private long nativePtr = 0; @@ -72,8 +75,11 @@ public abstract class MapRenderer implements MapRendererScheduler { @CallSuper protected void onDrawFrame(GL10 gl) { - nativeRender(); - + try { + nativeRender(); + } catch (java.lang.Error error) { + Logger.e(TAG, error.getMessage()); + } if (onFpsChangedListener != null) { updateFps(); } |