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