From bd82dff04b90e3eb1973f43ecc3fdfb8172bcdd7 Mon Sep 17 00:00:00 2001 From: QibolinCzp <qibolin02429@126.com> Date: 星期五, 14 五月 2021 14:40:58 +0800 Subject: [PATCH] Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop --- src/components/LayerController/dataset/WmsLayerList.js | 116 ++++++++++++++++++++++++++++++-------- src/conf/layers/LayerHbss.js | 2 src/conf/Constants.js | 1 src/conf/layers/LayerPk.js | 8 +- src/utils/utils.js | 37 ++++++++++++ 5 files changed, 135 insertions(+), 29 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 diff --git a/src/conf/Constants.js b/src/conf/Constants.js index 1617d8c..3bab997 100644 --- a/src/conf/Constants.js +++ b/src/conf/Constants.js @@ -38,6 +38,7 @@ export const props = { code: '缂栧彿', name: '鍚嶇О', + teamname: '鍚嶇О', pfktype: '鎺掓斁鍙g被鍨�', level: '绾у埆', length: '闀垮害(m)', diff --git a/src/conf/layers/LayerHbss.js b/src/conf/layers/LayerHbss.js index f93be09..7727670 100644 --- a/src/conf/layers/LayerHbss.js +++ b/src/conf/layers/LayerHbss.js @@ -14,7 +14,7 @@ checked: false, minZoom: 16, type: SERVICE_TYPE.WMS, - wmsLayers: 'sewer:manhole', + typeName: 'sewer:manhole', icon: 'sewers/绐ㄤ簳.png' }, { diff --git a/src/conf/layers/LayerPk.js b/src/conf/layers/LayerPk.js index b1b95be..edcb323 100644 --- a/src/conf/layers/LayerPk.js +++ b/src/conf/layers/LayerPk.js @@ -7,17 +7,18 @@ code: 'sewersDischargeport', name: '鎺掓斁鍙�', icon: 'sewers/闆ㄦ按鎺掑彛.png', - checked: true, + checked: false, type: 0, layers: [ { code: 'sewersNpk', name: '鍐呮帓鍙�', sname: '鍐呮帓鍙�', - checked: true, + checked: false, type: SERVICE_TYPE.WMS, icon: 'sewers/闆ㄦ按鎺掑彛.png', typeName: 'sewer:dischargeport', + filter: 'pfktype = \'鍐呮帓\'', minZoom: 10 // 鍦ㄦ寚瀹氱骇鍒樉绀� }, { @@ -25,9 +26,10 @@ name: '澶栨帓鍙�', sname: '澶栨帓鍙�', icon: 'sewers/闆ㄦ按鎺掑彛.png', - checked: true, // 榛樿閫変腑鐘舵�� + checked: false, // 榛樿閫変腑鐘舵�� type: SERVICE_TYPE.WMS, typeName: 'sewer:dischargeport', + filter: 'pfktype = \'澶栨帓\'', minZoom: 10 } ] diff --git a/src/utils/utils.js b/src/utils/utils.js index ef770cb..2328fd0 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -24,6 +24,43 @@ } /** + * 鑴夊啿鏁堟灉 + */ +export function pulseEffect (xy) { + let times = 5 + const colors = ['#98FB98', '#ff0000'] + // 鎻掍欢 鏁堟灉瀹炵幇 + var pulsingIcon = window.L.icon.pulse({ + iconSize: [20, 20], + color: colors[0], + fillColor: '' + }) + var picGroupMarker = window.L.marker(xy, { icon: pulsingIcon }).addTo(window.map) + // 瀹氭椂 + var timeInterval = setInterval(() => { + if (times > 0) { + times-- + } else { + clearInterval(timeInterval) + picGroupMarker.remove() + } + }, 1000) +} + +/** + * 璁剧疆寮圭獥骞崇Щ浣嶇疆 + * @param pos + * @param value + */ +export function setPanTo (pos, value) { + var position = pos + position = window.map.latLngToLayerPoint(position) + position.y += value + position = window.map.layerPointToLatLng(position) + window.map.flyTo(position) +} + +/** * 澶嶅埗瀵硅薄 * @param obj * @returns {{}} -- Gitblit v1.8.0