@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
56 lines (55 loc) • 1.77 kB
JavaScript
import TileLayer from 'ol/layer/WebGLTile';
import GeoTIFF from 'ol/source/GeoTIFF.js';
class CogManager {
constructor(map) {
Object.defineProperty(this, "map", {
enumerable: true,
configurable: true,
writable: true,
value: void 0
});
Object.defineProperty(this, "basemapLayers", {
enumerable: true,
configurable: true,
writable: true,
value: []
});
Object.defineProperty(this, "activeLayers", {
enumerable: true,
configurable: true,
writable: true,
value: {}
});
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;