From 4a15a7db79b22843e2a3fce3101ca67a6fda1820 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Thu, 8 Nov 2018 16:27:28 +0100 Subject: [android] - decouple style loading from OnMapReady --- .../mapboxsdk/constants/MapboxConstants.java | 6 +- .../mapboxsdk/location/LocationComponent.java | 26 +- .../location/LocationLayerController.java | 1 - .../mapboxsdk/maps/AttributionDialogManager.java | 15 +- .../java/com/mapbox/mapboxsdk/maps/MapView.java | 112 +------- .../java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 110 +++++++- .../com/mapbox/mapboxsdk/maps/NativeMapView.java | 17 +- .../main/java/com/mapbox/mapboxsdk/maps/Style.java | 134 +++++++--- .../mapboxsdk/maps/MapboxMapOptionsTest.java | 1 - .../mapboxsdk/location/LocationComponentTest.kt | 40 ++- .../location/LocationLayerControllerTest.kt | 8 +- .../mapboxsdk/location/utils/MapboxTestingUtils.kt | 6 +- .../location/utils/StyleChangeIdlingResource.kt | 3 +- .../com/mapbox/mapboxsdk/maps/MapboxMapTest.java | 15 +- .../mapbox/mapboxsdk/style/CustomGeometryTest.kt | 80 ------ .../mapboxsdk/testapp/render/RenderTest.java | 2 + .../testapp/style/CustomGeometrySourceTest.kt | 13 +- .../mapboxsdk/testapp/style/ExpressionTest.java | 21 +- .../mapbox/mapboxsdk/testapp/style/ImageTest.java | 6 +- .../mapboxsdk/testapp/style/RuntimeStyleTests.java | 4 +- .../mapboxsdk/testapp/style/StyleLoaderTest.java | 11 +- .../testapp/utils/OnMapReadyIdlingResource.java | 20 +- .../mapboxsdk/testapp/activity/SingleActivity.java | 4 +- .../annotation/AnimatedSymbolLayerActivity.java | 11 +- .../annotation/DynamicMarkerChangeActivity.java | 7 +- .../camera/CameraAnimationTypeActivity.java | 8 +- .../activity/camera/GestureDetectorActivity.java | 2 + .../activity/camera/LatLngBoundsActivity.java | 23 +- .../activity/camera/ManualZoomActivity.java | 3 +- .../activity/camera/MaxMinZoomActivity.java | 2 +- .../activity/customlayer/CustomLayerActivity.java | 9 +- .../espresso/DeviceIndependentTestActivity.java | 2 + .../QueryRenderedFeaturesBoxCountActivity.java | 4 + .../QueryRenderedFeaturesBoxHighlightActivity.java | 16 +- ...ueryRenderedFeaturesBoxSymbolCountActivity.java | 40 ++- .../QueryRenderedFeaturesPropertiesActivity.java | 1 - .../feature/QuerySourceFeaturesActivity.java | 92 ++++--- .../activity/fragment/NestedViewPagerActivity.kt | 2 +- .../activity/imagegenerator/PrintActivity.java | 4 +- .../activity/imagegenerator/SnapshotActivity.java | 2 +- .../activity/location/LocationFragmentActivity.kt | 11 +- .../location/LocationMapChangeActivity.java | 8 +- .../activity/location/LocationModesActivity.java | 74 ++++-- .../location/ManualLocationUpdatesActivity.java | 24 +- .../activity/maplayout/DebugModeActivity.java | 24 +- .../activity/maplayout/DoubleMapActivity.java | 2 +- .../activity/maplayout/LocalGlyphActivity.java | 27 +- .../activity/maplayout/MapChangeActivity.java | 7 +- .../activity/maplayout/MapPaddingActivity.java | 8 +- .../activity/maplayout/OverlayMapActivity.kt | 4 + .../activity/maplayout/SimpleMapActivity.java | 7 +- .../offline/MergeOfflineRegionsActivity.kt | 7 +- .../testapp/activity/offline/OfflineActivity.java | 3 +- .../activity/offline/UpdateMetadataActivity.java | 6 +- .../activity/snapshot/MapSnapshotterActivity.java | 2 +- .../activity/storage/UrlTransformActivity.java | 5 +- .../style/AnimatedImageSourceActivity.java | 23 +- .../style/BuildingFillExtrusionActivity.java | 9 +- .../activity/style/CircleLayerActivity.java | 22 +- .../activity/style/CustomSpriteActivity.java | 87 ++++--- .../activity/style/DataDrivenStyleActivity.java | 11 +- .../activity/style/DraggableMarkerActivity.kt | 14 +- .../activity/style/FillExtrusionActivity.java | 76 +++--- .../activity/style/GeoJsonClusteringActivity.java | 31 ++- .../activity/style/GradientLineActivity.java | 36 +-- .../testapp/activity/style/GridSourceActivity.java | 14 +- .../activity/style/HeatmapLayerActivity.java | 12 +- .../activity/style/HillshadeLayerActivity.java | 9 +- .../activity/style/RealTimeGeoJsonActivity.java | 38 +-- .../activity/style/RuntimeStyleActivity.java | 27 +- .../style/RuntimeStyleTimingTestActivity.java | 9 +- .../testapp/activity/style/StyleFileActivity.java | 5 +- .../activity/style/SymbolLayerActivity.java | 77 +++--- .../style/ZoomFunctionSymbolLayerActivity.java | 12 +- .../textureview/TextureViewAnimationActivity.java | 3 + .../textureview/TextureViewDebugModeActivity.java | 286 +-------------------- .../textureview/TextureViewResizeActivity.java | 13 +- .../src/main/res/layout/activity_debug_mode.xml | 8 - .../res/layout/activity_fill_extrusion_layer.xml | 3 +- .../src/main/res/layout/activity_gradient_line.xml | 3 +- .../src/main/res/layout/activity_heatmaplayer.xml | 3 +- .../src/main/res/layout/activity_local_glyph.xml | 1 + .../res/layout/activity_location_layer_mode.xml | 1 + .../src/main/res/layout/activity_map_padding.xml | 3 +- .../main/res/layout/activity_map_visibility.xml | 15 +- .../src/main/res/layout/activity_print.xml | 1 + .../res/layout/activity_query_features_point.xml | 3 +- 87 files changed, 942 insertions(+), 1015 deletions(-) delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/style/CustomGeometryTest.kt diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java index afd25f13fc..2c063daa8f 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/constants/MapboxConstants.java @@ -117,6 +117,11 @@ public class MapboxConstants { */ public static final String FRAG_ARG_MAPBOXMAPOPTIONS = "MapboxMapOptions"; + /** + * Layer Id of annotations layer + */ + public static final String LAYER_ID_ANNOTATIONS = "com.mapbox.annotations.points"; + // Save instance state keys public static final String STATE_HAS_SAVED_STATE = "mapbox_savedState"; public static final String STATE_CAMERA_POSITION = "mapbox_cameraPosition"; @@ -126,7 +131,6 @@ public class MapboxConstants { public static final String STATE_TILT_ENABLED = "mapbox_tiltEnabled"; public static final String STATE_DOUBLE_TAP_ENABLED = "mapbox_doubleTapEnabled"; public static final String STATE_DEBUG_ACTIVE = "mapbox_debugActive"; - public static final String STATE_STYLE_URL = "mapbox_styleUrl"; public static final String STATE_COMPASS_ENABLED = "mapbox_compassEnabled"; public static final String STATE_COMPASS_GRAVITY = "mapbox_compassGravity"; public static final String STATE_COMPASS_MARGIN_LEFT = "mapbox_compassMarginLeft"; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java index b2f1206d06..aa281ee314 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponent.java @@ -11,7 +11,6 @@ import android.support.annotation.RequiresPermission; import android.support.annotation.StyleRes; import android.support.annotation.VisibleForTesting; import android.view.WindowManager; - import com.mapbox.android.core.location.LocationEngine; import com.mapbox.android.core.location.LocationEngineCallback; import com.mapbox.android.core.location.LocationEngineProvider; @@ -123,7 +122,12 @@ public final class LocationComponent { /** * Indicates whether the component has been initialized. */ - private boolean isInitialized; + private boolean isComponentInitialized; + + /** + * Indicates whether the style has been initialized. + */ + private boolean isStyleInitialized; /** * Indicates that the component is enabled and should be displaying location if Mapbox components are available and @@ -182,7 +186,6 @@ public final class LocationComponent { this.staleStateManager = staleStateManager; this.compassEngine = compassEngine; this.internalLocationEngineProvider = internalLocationEngineProvider; - isInitialized = true; } /** @@ -835,16 +838,17 @@ public final class LocationComponent { * Internal use. */ public void onFinishLoadingStyle() { - if (isInitialized) { + isStyleInitialized = true; + if (isComponentInitialized) { locationLayerController.initializeComponents(options); locationCameraController.initializeOptions(options); + onLocationLayerStart(); } - onLocationLayerStart(); } @SuppressLint("MissingPermission") private void onLocationLayerStart() { - if (!isInitialized || !isComponentStarted) { + if (!isComponentInitialized || !isComponentStarted) { return; } @@ -874,7 +878,7 @@ public final class LocationComponent { } private void onLocationLayerStop() { - if (!isInitialized || !isLayerReady || !isComponentStarted) { + if (!isComponentInitialized || !isLayerReady || !isComponentStarted) { return; } @@ -891,10 +895,10 @@ public final class LocationComponent { } private void initialize(@NonNull Context context, @NonNull LocationComponentOptions options) { - if (isInitialized) { + if (isComponentInitialized) { return; } - isInitialized = true; + isComponentInitialized = true; this.options = options; mapboxMap.addOnMapClickListener(onMapClickListener); @@ -924,6 +928,10 @@ public final class LocationComponent { setRenderMode(RenderMode.NORMAL); setCameraMode(CameraMode.NONE); + if (isStyleInitialized) { + onFinishLoadingStyle(); + } + onLocationLayerStart(); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java index 0e7508ab74..b2ba5e6846 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java @@ -78,7 +78,6 @@ final class LocationLayerController implements MapboxAnimator.OnLayerAnimationsV this.layerSourceProvider = layerSourceProvider; this.bitmapProvider = bitmapProvider; this.locationFeature = featureProvider.generateLocationFeature(locationFeature, options); - initializeComponents(options); setRenderMode(RenderMode.NORMAL); } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java index 3b1b87c15f..8e436954c8 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/AttributionDialogManager.java @@ -12,7 +12,6 @@ import android.support.annotation.Nullable; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Toast; - import com.mapbox.mapboxsdk.MapStrictMode; import com.mapbox.mapboxsdk.Mapbox; import com.mapbox.mapboxsdk.R; @@ -25,8 +24,8 @@ import java.lang.ref.WeakReference; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Set; import java.util.Locale; +import java.util.Set; /** * Responsible for managing attribution interactions on the map. @@ -180,10 +179,14 @@ public class AttributionDialogManager implements View.OnClickListener, DialogInt List attributions = new ArrayList<>(); String attribution; - for (Source source : mapboxMap.getStyle().getSources()) { - attribution = source.getAttribution(); - if (!attribution.isEmpty()) { - attributions.add(source.getAttribution()); + + Style style = mapboxMap.getStyle(); + if (style != null) { + for (Source source : mapboxMap.getStyle().getSources()) { + attribution = source.getAttribution(); + if (!attribution.isEmpty()) { + attributions.add(source.getAttribution()); + } } } 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 8e76d14fc3..8ec5a923bf 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 @@ -25,8 +25,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.camera.CameraPosition; -import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.location.LocationComponent; import com.mapbox.mapboxsdk.maps.renderer.MapRenderer; @@ -34,7 +32,6 @@ import com.mapbox.mapboxsdk.maps.renderer.glsurfaceview.GLSurfaceViewMapRenderer import com.mapbox.mapboxsdk.maps.renderer.textureview.TextureViewMapRenderer; import com.mapbox.mapboxsdk.maps.widgets.CompassView; import com.mapbox.mapboxsdk.net.ConnectivityReceiver; -import com.mapbox.mapboxsdk.offline.OfflineRegionDefinition; import com.mapbox.mapboxsdk.storage.FileSource; import com.mapbox.mapboxsdk.utils.BitmapUtils; @@ -484,69 +481,6 @@ public class MapView extends FrameLayout implements NativeMapView.ViewCallback { } } - /** - *

- * Loads a new map style from the specified URL. - *

- * {@code url} can take the following forms: - *