diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-02-18 12:34:27 +0100 |
---|---|---|
committer | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-02-19 11:08:31 +0100 |
commit | ff5a607f4263903e568cda4a8826988f16829d38 (patch) | |
tree | ecbd7cda3148ced2773a67e33d1b81a596bbf6f7 | |
parent | 1fc7a9b82ea0c064c20247f0902b3854fff1942f (diff) | |
download | qtlocation-mapboxgl-upstream/lp-component-layer-below-when-disabled.tar.gz |
[android] keep location component's layers hidden when new style with the "layer-below" option is appliedupstream/lp-component-layer-below-when-disabled
2 files changed, 33 insertions, 4 deletions
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 1fa36515a7..f11acacf31 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 @@ -111,6 +111,11 @@ final class LocationLayerController { if (layerBelow == null || !layerBelow.equals(newLayerBelowOption)) { removeLayers(); addLayers(newLayerBelowOption); + if (isHidden) { + for (String layerId : layerMap) { + setLayerVisibility(layerId, false); + } + } setRenderMode(renderMode); } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/location/LocationLayerControllerTest.kt b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/location/LocationLayerControllerTest.kt index 065d5194a0..199235c9ca 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/location/LocationLayerControllerTest.kt +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/androidTest/java/com/mapbox/mapboxsdk/location/LocationLayerControllerTest.kt @@ -17,12 +17,9 @@ import com.mapbox.mapboxsdk.camera.CameraUpdateFactory import com.mapbox.mapboxsdk.geometry.LatLng import com.mapbox.mapboxsdk.location.LocationComponentConstants.* import com.mapbox.mapboxsdk.location.modes.RenderMode -import com.mapbox.mapboxsdk.location.utils.LocationComponentAction +import com.mapbox.mapboxsdk.location.utils.* import com.mapbox.mapboxsdk.location.utils.MapboxTestingUtils.Companion.MAPBOX_HEAVY_STYLE import com.mapbox.mapboxsdk.location.utils.MapboxTestingUtils.Companion.pushSourceUpdates -import com.mapbox.mapboxsdk.location.utils.StyleChangeIdlingResource -import com.mapbox.mapboxsdk.location.utils.isLayerVisible -import com.mapbox.mapboxsdk.location.utils.querySourceFeatures import com.mapbox.mapboxsdk.maps.MapboxMap import com.mapbox.mapboxsdk.maps.Style import com.mapbox.mapboxsdk.style.sources.GeoJsonSource @@ -248,6 +245,33 @@ class LocationLayerControllerTest : EspressoTest() { } @Test + fun whenStyleChanged_isDisabled_hasLayerBelow_staysHidden() { + val componentAction = object : LocationComponentAction.OnPerformLocationComponentAction { + override fun onLocationComponentAction(component: LocationComponent, mapboxMap: MapboxMap, + style: Style, uiController: UiController, context: Context) { + component.activateLocationComponent(context, style, false) + component.isLocationComponentEnabled = true + component.forceLocationUpdate(location) + TestingAsyncUtils.waitForLayer(uiController, idlingResource.mapView) + component.isLocationComponentEnabled = false + TestingAsyncUtils.waitForLayer(uiController, idlingResource.mapView) + assertThat(mapboxMap.queryRenderedFeatures(location, FOREGROUND_LAYER).isEmpty(), `is`(true)) + + val options = + LocationComponentOptions.createFromAttributes(context, com.mapbox.mapboxsdk.testapp.R.style.CustomLocationComponent) + .toBuilder() + .layerBelow("road-label") + .build() + + component.applyStyle(options) + TestingAsyncUtils.waitForLayer(uiController, idlingResource.mapView) + assertThat(mapboxMap.queryRenderedFeatures(location, FOREGROUND_LAYER).isEmpty(), `is`(true)) + } + } + executeComponentTest(componentAction) + } + + @Test fun whenStyleChanged_staleStateChanges() { val componentAction = object : LocationComponentAction.OnPerformLocationComponentAction { override fun onLocationComponentAction(component: LocationComponent, mapboxMap: MapboxMap, |