summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java')
-rw-r--r--platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationLayerController.java33
1 files changed, 17 insertions, 16 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 aa8a82bf6d..c0c6017cd6 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
@@ -77,8 +77,7 @@ final class LocationLayerController {
private boolean isHidden = true;
- @Nullable
- private String layerBelow;
+ private LocationComponentPositionManager positionManager;
LocationLayerController(MapboxMap mapboxMap, Style style, LayerSourceProvider layerSourceProvider,
LayerFeatureProvider featureProvider, LayerBitmapProvider bitmapProvider,
@@ -95,8 +94,9 @@ final class LocationLayerController {
void initializeComponents(Style style, LocationComponentOptions options) {
this.style = style;
+ this.positionManager = new LocationComponentPositionManager(style, options.layerAbove(), options.layerBelow());
addLocationSource();
- addLayers(options.layerBelow());
+ addLayers();
applyStyle(options);
if (isHidden) {
@@ -107,18 +107,15 @@ final class LocationLayerController {
}
void applyStyle(@NonNull LocationComponentOptions options) {
- String newLayerBelowOption = options.layerBelow();
- if ((layerBelow != null || newLayerBelowOption != null)) {
- if (layerBelow == null || !layerBelow.equals(newLayerBelowOption)) {
- removeLayers();
- addLayers(newLayerBelowOption);
- if (isHidden) {
- for (String layerId : layerSet) {
- setLayerVisibility(layerId, false);
- }
+ if (positionManager.update(options.layerAbove(), options.layerBelow())) {
+ removeLayers();
+ addLayers();
+ if (isHidden) {
+ for (String layerId : layerSet) {
+ setLayerVisibility(layerId, false);
}
- setRenderMode(renderMode);
}
+ setRenderMode(renderMode);
}
this.options = options;
@@ -237,9 +234,13 @@ final class LocationLayerController {
}
}
- private void addLayers(@NonNull String idBelowLayer) {
- layerBelow = idBelowLayer;
- addSymbolLayer(BEARING_LAYER, idBelowLayer);
+ private void addLayers() {
+ // positions the top-most reference layer
+ Layer layer = layerSourceProvider.generateLayer(BEARING_LAYER);
+ positionManager.addLayerToMap(layer);
+ layerSet.add(layer.getId());
+
+ // adds remaining layers while keeping the order
addSymbolLayer(FOREGROUND_LAYER, BEARING_LAYER);
addSymbolLayer(BACKGROUND_LAYER, FOREGROUND_LAYER);
addSymbolLayer(SHADOW_LAYER, BACKGROUND_LAYER);