all repos — onyx @ main

minimal map annotation and location data sharing tool

src/11-tilelayer.ts (raw)

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
class TileLayerWrapper {
  self: L.TileLayer;
  name: string;
  visible: boolean = false;
  
  constructor(name: string, self: L.TileLayer) {
    this.self = self;
    this.name = name;
  }
  
  static constructLayer(name: string, self: L.TileLayer): TileLayerWrapper {
    const wrapper = new TileLayerWrapper(name, self);
    TileLayerWrapper.layers.push(wrapper);
    return wrapper;
  }
  
  static getActiveLayer(): string | null {
    for (const l of TileLayerWrapper.layers) {
      if (l.visible == true) {
        return l.name;
      }
    }
    return null;
  }
  static layers: TileLayerWrapper[] = new Array<TileLayerWrapper>();
  static enableOnly(self: string, map: L.Map): void {
    for (const l of TileLayerWrapper.layers) {
      if (l.visible) {
        l.self.removeFrom(map);
        l.visible = false;
      }
      if (l.name == self) {
        l.self.addTo(map);
        l.visible = true;
      }
    }
  }
}