| | |
| | | import clone from '../../../utils/utils' |
| | | |
| | | class WmsLayerList { |
| | | constructor () { |
| | | // {图层名称:[{typeName:xxx,filter:yyy}]} |
| | | // [{图层名称:[{typeName:xxx,filter:yyy}]}] |
| | | this.layers = [] |
| | | } |
| | | |
| | |
| | | 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) |
| | | this.addLayer(layerGroup, typeName, filter, index) |
| | | } |
| | | } |
| | | |
| | | addLayer (layerGroup, typeName, filter) { |
| | | const layers = this.layers |
| | | const layer = layers[layerGroup] |
| | | addLayer (layerGroup, typeName, filter, index) { |
| | | const layer = this._getLayer(layerGroup) |
| | | |
| | | if (layer) { |
| | | layers[layerGroup].push({ typeName: typeName, filter: filter || 'INCLUDE' }) |
| | | const offset = this.indexOf(typeName, filter) |
| | | if (offset < 0) { |
| | | const layerConfig = layer[layerGroup] |
| | | layerConfig.push({ typeName: typeName, filter: filter || 'INCLUDE' }) |
| | | } |
| | | } else { |
| | | layers[layerGroup] = [{ typeName: typeName, filter: filter || 'INCLUDE' }] |
| | | 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) { |
| | | const layers = this.layers |
| | | for (const k in layers) { |
| | | if (k === typeName) { |
| | | delete this.layers[k] |
| | | break |
| | | } |
| | | for (let i = 0; i < layers[k].length; i++) { |
| | | const layer = layers[k][i] |
| | | if (typeName === layer.typeName && filter === layer.filter) { |
| | | this.layers[k].splice(i, 1) |
| | | if (this.layers[k].length === 0) { |
| | | delete this.layers[k] |
| | | } |
| | | 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 (const k in layers) { |
| | | _layers.push(k) |
| | | 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 (const k in layers) { |
| | | for (let i = 0; i < layers.length; i++) { |
| | | const layer = layers[i] |
| | | const filters = [] |
| | | for (let i = 0; i < layers[k].length; i++) { |
| | | filters.push(layers[k][i].filter) |
| | | 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 |