Source: map/utils/loadLayer.js

import { WMSLayer } from "../layer/WMSLayer/WMSLayer.js";
import { WFSLayer } from "../layer/WFSLayer/WFSLayer.js";
import { Layer } from "../layer/Layer/Layer.js";
import { GeoJSONLayer } from "../layer/GeoJSONLayer/GeoJSONLayer.js";
import { TileLayer } from "../layer/TileLayer/TileLayer.js";
import { DwsLayer } from "../layer/DwsLayer/DwsLayer.js";
import { CsvLayer } from "../layer/CsvLayer/CsvLayer.js";
import { OpusLayer } from "../layer/OpusLayer/OpusLayer.js";
import { Folder } from "../layer/Folder/Folder.js";
import { FilterLayer } from "../layer/FilterLayer/FilterLayer.js";
import { StaLayer } from "../layer/StaLayer/StaLayer.js";

const layerClasses = {
    "wms": WMSLayer,
    "wfs": WFSLayer,
    "geojson": GeoJSONLayer,
    "dws": DwsLayer,
    "csv": CsvLayer,
    "opus": OpusLayer,
    "tile": TileLayer,
    "folder": Folder,
    "filter": FilterLayer,
    "sta": StaLayer
}

/**
 * Static method to load a layer from a json config
 * @param {object} config 
 * @returns {Layer} loaded layer instance
 */
export function loadLayer(config, cache, id) {
    const type = (config.type || cache.type || "").toLowerCase();
    const LayerClass = layerClasses[type] || Folder;
    return new LayerClass(config, cache, id);
}