@geogirafe/lib-geoportal
Version:
GeoGirafe is a flexible application to build online geoportals.
46 lines (45 loc) • 1.69 kB
JavaScript
import { WmsClientDefault, WmsClientGeoServer, WmsClientMapServer, WmsClientQgis } from './wmsclient.js';
import VendorSpecificOgcServerManager from '../vendorspecificogcservermanager.js';
export default class WmsManager extends VendorSpecificOgcServerManager {
map;
constructor(context) {
super(context);
this.map = this.context.mapManager.getMap();
}
initializeSingleton() {
// Register the default client
this.registerClientClass('default', WmsClientDefault);
this.registerClientClass('geoserver', WmsClientGeoServer);
this.registerClientClass('mapserver', WmsClientMapServer);
this.registerClientClass('qgisserver', WmsClientQgis);
this.registerClientClass('georama.webgis', WmsClientQgis);
}
getClientId(ogcServer) {
return ogcServer.uniqueWmsQueryId;
}
createClient(clientClass, ogcServer) {
return new clientClass(ogcServer, this.map, this.context);
}
selectFeatures(extent) {
for (const client of this._clients.values()) {
client.selectFeatures(extent);
}
}
selectFeaturesByQuery(query, layer) {
const client = this.getClient(layer.ogcServer);
if (!client) {
throw new Error(`Cannot select features by query: no client found for layer ${layer.name}`);
}
client.selectFeaturesByQuery(query);
}
refreshZIndexes() {
for (const client of this._clients.values()) {
client.refreshZIndexes();
}
}
removeAllBasemapLayers() {
for (const client of this._clients.values()) {
client.removeAllBasemapLayers();
}
}
}