import clone from '../../../utils/utils' class WmsLayerList { constructor () { // [{图层名称:[{typeName:xxx,filter:yyy}]}] this.layers = [] } addConfig (config) { const typeName = config.typeName const layerGroup = config.layerGroup || typeName const filter = config.filter const index = config.index || 9 if (layerGroup) { this.addLayer(layerGroup, typeName, filter, index) } } addLayer (layerGroup, typeName, filter, index) { const layer = this._getLayer(layerGroup) if (layer) { const offset = this.indexOf(typeName, filter) if (offset < 0) { const layerConfig = layer[layerGroup] layerConfig.push({ typeName: typeName, filter: filter || 'INCLUDE' }) } } else { const layerConfig = {} layerConfig[layerGroup] = [{ typeName: typeName, filter: filter || 'INCLUDE' }] this.layers.push(layerConfig) } } _getLayer (layer) { const layers = this.layers for (let i = 0; i < layers.length; i++) { const lay = layers[i] if (lay[layer]) { return lay } } return null } indexOf (typeName, filter) { filter = filter || 'INCLUDE' const layers = this.layers for (let i = 0; i < layers.length; i++) { const layer = layers[i] for (const k in layer) { const lay = layer[k] for (let j = 0; j < lay.length; j++) { const l = lay[j] if (typeName === l.typeName && filter === l.filter) { return j } } } } return -1 } remove (typeName, filter) { filter = filter || 'INCLUDE' const layers = clone(this.layers) for (let j = 0; j < layers.length; j++) { const layer = layers[j] for (const k in layer) { /* if (typeName === k) { delete this.layers[j][k] break } */ const layerConfig = layer[k] for (let i = 0; i < layerConfig.length; i++) { const lay = layerConfig[i] if (typeName === lay.typeName && filter === lay.filter) { this.layers[j][k].splice(i, 1) if (this.layers[j][k].length === 0) { this.layers.splice(j, 1) } } } } } } getLayers () { const layers = this.layers const _layers = [] for (let i = 0; i < layers.length; i++) { const layer = layers[i] for (const k in layer) { _layers.push(k) } } return _layers.join(',') } getFilters () { const layers = this.layers const cqlFilters = [] for (let i = 0; i < layers.length; i++) { const layer = layers[i] const filters = [] for (const k in layer) { const layerConfig = layer[k] for (let i = 0; i < layerConfig.length; i++) { const filter = layerConfig[i].filter if (filter) { filters.push(filter) } } } cqlFilters.push(filters.join(' OR ')) } return cqlFilters.join(';') } /** * 添加元素到指定位置 * @param index * @param element * @private */ _addIndex (index, element) { const newArr = [] for (var i = this.dataSouce.length - 1; i > index - 1; i--) { newArr[i + 1] = this.dataSouce[i] } newArr[index] = element this.layers = newArr } } export default WmsLayerList