@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
37 lines (36 loc) • 1.21 kB
JavaScript
import TileLayer from 'ol/layer/Tile.js';
import { XYZ } from 'ol/source.js';
class XyzManager {
map;
basemapLayers = [];
activeLayers = {};
constructor(map) {
this.map = map;
}
removeAllBasemapLayers() {
this.basemapLayers.forEach((basemap) => {
this.map.removeLayer(basemap);
});
this.basemapLayers = [];
}
addBasemapLayer(layer) {
const source = new XYZ({ url: layer.source });
const olayer = new TileLayer({ source: source });
this.basemapLayers.push(olayer);
// For basemap, set a minimal number (arbitrary defined to less than -5000)
olayer.setZIndex(-5000 - layer.order);
this.map.addLayer(olayer);
}
addLayer(layer) {
const source = new XYZ({ url: layer.source });
const olayer = new TileLayer({ source: source });
this.map.addLayer(olayer);
this.activeLayers[layer.treeItemId] = { layer: layer, olayer: olayer };
}
removeLayer(layer) {
const olayer = this.activeLayers[layer.treeItemId].olayer;
delete this.activeLayers[layer.treeItemId];
this.map.removeLayer(olayer);
}
}
export default XyzManager;