@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
38 lines (37 loc) • 1.23 kB
JavaScript
import olVectorTileLayer from 'ol/layer/VectorTile.js';
import apply, { applyStyle } from 'ol-mapbox-style';
import LayerGroup from 'ol/layer/Group.js';
class VectorTilesManager {
map;
basemapLayers = [];
constructor(map) {
this.map = map;
}
removeAllBasemapLayers() {
this.basemapLayers.forEach((basemap) => {
this.map.removeLayer(basemap);
});
this.basemapLayers = [];
}
/**
* Adds a vectortiles basemap based on its layerName. If no layerName is provided,
* will use apply from ol-mapbox-style to create all layers.
* @param basemap
*/
addBasemapLayer(basemap) {
let olayer;
if (basemap.layerName) {
olayer = new olVectorTileLayer({ declutter: true });
applyStyle(olayer, basemap.style, basemap.layerName);
}
else {
olayer = new LayerGroup();
apply(olayer, basemap.style);
}
this.basemapLayers.push(olayer);
// For basemap, set a minimal number (arbitrary defined to less than -5000)
olayer.setZIndex(-5000 - basemap.order);
this.map.getLayers().insertAt(0, olayer);
}
}
export default VectorTilesManager;