import clone from '../../../utils/utils'
|
|
/**
|
* 组装wms加载所需的layers以及filters参数
|
*/
|
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
|
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' }]
|
if (index) {
|
this.layers[index] = layerConfig
|
} else {
|
this.layers.push(layerConfig)
|
}
|
}
|
}
|
|
_getLayer (layer) {
|
const layers = this.layers
|
for (let i = 0; i < layers.length; i++) {
|
const lay = layers[i]
|
if (lay && 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)
|
}
|
}
|
}
|
if (filters.length > 0) {
|
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
|