@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
41 lines (40 loc) • 1.3 kB
JavaScript
import TileLayer from 'ol/layer/WebGLTile.js';
import GeoTIFF from 'ol/source/GeoTIFF.js';
class CogManager {
map;
basemapLayers = [];
activeLayers = {};
constructor(map) {
this.map = map;
}
removeAllBasemapLayers() {
this.basemapLayers.forEach((basemap) => {
this.map.removeLayer(basemap);
});
this.basemapLayers = [];
}
addBasemapLayer(layer) {
const source = new GeoTIFF({
sources: [{ 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 GeoTIFF({
sources: [{ 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 CogManager;