@loaders.gl/wms
Version:
Framework-independent loaders for the WMS (Web Map Service) standard
42 lines (34 loc) • 1.16 kB
text/typescript
// loaders.gl
// SPDX-License-Identifier: MIT
// Copyright (c) vis.gl contributors
import {XMLLoader} from '@loaders.gl/xml';
/** WMS Feature info - response to a WMS `GetFeatureInfo` request */
export type WMSFeatureInfo = {
features: WMSFeature[];
};
export type WMSFeature = {
attributes: Record<string, number | string>;
type: string;
bounds: {top: number; bottom: number; left: number; right: number};
};
/**
* Parses a typed data structure from raw XML for `GetFeatureInfo` response
* @note Error handlings is fairly weak
*/
export function parseWMSFeatureInfo(text: string, options): WMSFeatureInfo {
const parsedXML = XMLLoader.parseTextSync?.(text, options);
const xmlFeatureInfo: any = parsedXML.FeatureInfoResponse?.FIELDS || [];
const xmlFeatures = Array.isArray(xmlFeatureInfo) ? xmlFeatureInfo : [xmlFeatureInfo];
return {
features: xmlFeatures.map((xmlFeature) => extractFeature(xmlFeature))
};
}
function extractFeature(xmlFeature: any) {
const xmlFields = xmlFeature || {};
// TODO - not correct
return {
attributes: xmlFields,
type: '',
bounds: {bottom: 0, top: 0, left: 0, right: 0}
};
}