UNPKG

maplair

Version:

JavaScript library for mobile-friendly interactive maps

58 lines (57 loc) • 1.47 kB
import { setOptions, stamp } from "../core/Util.js"; import { Layer } from "./Layer.js"; //#region src/layer/LayerGroup.js var LayerGroup = class LayerGroup extends Layer { constructor(layers, options) { super(); setOptions(this, options); this._layers = {}; for (const layer of layers ?? []) this.addLayer(layer); this.callInitHooks(LayerGroup); } addLayer(layer) { const id = this.getLayerId(layer); this._layers[id] = layer; this._map?.addLayer(layer); return this; } removeLayer(layer) { const id = layer in this._layers ? layer : this.getLayerId(layer); if (this._map && this._layers[id]) this._map.removeLayer(this._layers[id]); delete this._layers[id]; return this; } hasLayer(layer) { return (typeof layer === "number" ? layer : this.getLayerId(layer)) in this._layers; } clearLayers() { return this.eachLayer(this.removeLayer, this); } onAdd(map) { this.eachLayer(map.addLayer, map); } onRemove(map) { this.eachLayer(map.removeLayer, map); } eachLayer(method, context) { for (const layer of Object.values(this._layers)) method.call(context, layer); return this; } getLayer(id) { return this._layers[id]; } getLayers() { const layers = []; this.eachLayer(layers.push, layers); return layers; } setZIndex(zIndex) { return this.eachLayer((l) => l.setZIndex?.(zIndex)); } getLayerId(layer) { return stamp(layer); } }; //#endregion export { LayerGroup }; //# sourceMappingURL=LayerGroup.js.map