summaryrefslogtreecommitdiff
path: root/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/location/LocationComponentPositionManager.java
blob: f2e4d0bb41c552d17b6214dc8377e45c63e56d25 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
package com.mapbox.mapboxsdk.location;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import com.mapbox.mapboxsdk.maps.Style;
import com.mapbox.mapboxsdk.style.layers.Layer;

class LocationComponentPositionManager {

  @NonNull
  private final Style style;

  @Nullable
  private String layerAbove;

  @Nullable
  private String layerBelow;

  LocationComponentPositionManager(@NonNull Style style, @Nullable String layerAbove, @Nullable String layerBelow) {
    this.style = style;
    this.layerAbove = layerAbove;
    this.layerBelow = layerBelow;
  }

  /**
   * Returns true whenever layer above/below configuration has changed and requires re-layout.
   */
  boolean update(@Nullable String layerAbove, @Nullable String layerBelow) {
    boolean requiresUpdate =
      !(this.layerAbove == layerAbove || (this.layerAbove != null && this.layerAbove.equals(layerAbove)))
        || !(this.layerBelow == layerBelow || (this.layerBelow != null && this.layerBelow.equals(layerBelow)));

    this.layerAbove = layerAbove;
    this.layerBelow = layerBelow;
    return requiresUpdate;
  }

  void addLayerToMap(@NonNull Layer layer) {
    if (layerAbove != null) {
      style.addLayerAbove(layer, layerAbove);
    } else if (layerBelow != null) {
      style.addLayerBelow(layer, layerBelow);
    } else {
      style.addLayer(layer);
    }
  }
}