From fb36301ca4335e9f511a877569204153e9d461fe Mon Sep 17 00:00:00 2001 From: 徐旺旺 <11530253@qq.com> Date: 星期五, 14 五月 2021 14:39:34 +0800 Subject: [PATCH] 修改图层控制BUG --- src/components/LayerController/dataset/WmsLayerList.js | 116 +++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 91 insertions(+), 25 deletions(-) diff --git a/src/components/LayerController/dataset/WmsLayerList.js b/src/components/LayerController/dataset/WmsLayerList.js index af11119..fc0e782 100644 --- a/src/components/LayerController/dataset/WmsLayerList.js +++ b/src/components/LayerController/dataset/WmsLayerList.js @@ -1,7 +1,8 @@ +import clone from '../../../utils/utils' class WmsLayerList { constructor () { - // {鍥惧眰鍚嶇О锛歔{typeName:xxx,filter:yyy}]} + // [{鍥惧眰鍚嶇О锛歔{typeName:xxx,filter:yyy}]}] this.layers = [] } @@ -9,36 +10,76 @@ 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) + } + } } } } @@ -47,8 +88,11 @@ 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(',') } @@ -56,15 +100,37 @@ 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 -- Gitblit v1.8.0