diff options
author | Łukasz Paczos <lukas.paczos@gmail.com> | 2019-01-17 13:05:05 +0100 |
---|---|---|
committer | Łukasz Paczos <lukasz.paczos@mapbox.com> | 2019-01-17 14:36:52 +0100 |
commit | dd3027c9b851e92b872caaccfaf3e4e602f14516 (patch) | |
tree | cc471c230977a3b34a7a5a14e0535c137b04fbb7 /platform/android/MapboxGLAndroidSDK/src/main | |
parent | f0392e0471a2e045eef3eba5fdcaef2066bd579e (diff) | |
download | qtlocation-mapboxgl-dd3027c9b851e92b872caaccfaf3e4e602f14516.tar.gz |
[android] re-apply location component's "layer-below" when changed
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main')
-rw-r--r-- | platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java | 19 |
1 files changed, 19 insertions, 0 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 73ecf44d41..c97713cfb5 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 @@ -73,6 +73,9 @@ final class LocationLayerController implements MapboxAnimator.OnLayerAnimationsV private boolean isHidden = true; + @Nullable + private String layerBelow; + LocationLayerController(MapboxMap mapboxMap, Style style, LayerSourceProvider layerSourceProvider, LayerFeatureProvider featureProvider, LayerBitmapProvider bitmapProvider, @NonNull LocationComponentOptions options) { @@ -99,6 +102,14 @@ final class LocationLayerController implements MapboxAnimator.OnLayerAnimationsV } void applyStyle(@NonNull LocationComponentOptions options) { + String newLayerBelowOption = options.layerBelow(); + if ((layerBelow != null || newLayerBelowOption != null)) { + if (layerBelow == null || !layerBelow.equals(newLayerBelowOption)) { + removeLayers(); + addLayers(newLayerBelowOption); + } + } + this.options = options; float elevation = options.elevation(); @@ -211,6 +222,7 @@ final class LocationLayerController implements MapboxAnimator.OnLayerAnimationsV } private void addLayers(@NonNull String idBelowLayer) { + layerBelow = idBelowLayer; addSymbolLayer(BEARING_LAYER, idBelowLayer); addSymbolLayer(FOREGROUND_LAYER, BEARING_LAYER); addSymbolLayer(BACKGROUND_LAYER, FOREGROUND_LAYER); @@ -233,6 +245,13 @@ final class LocationLayerController implements MapboxAnimator.OnLayerAnimationsV layerMap.add(layer.getId()); } + private void removeLayers() { + for (String layerId : layerMap) { + style.removeLayer(layerId); + } + layerMap.clear(); + } + private void setBearingProperty(@NonNull String propertyId, float bearing) { locationFeature.addNumberProperty(propertyId, bearing); refreshSource(); |