From 90bd1d10df12f458eb2e64e8de2b225f45d02153 Mon Sep 17 00:00:00 2001
From: 徐旺旺 <11530253@qq.com>
Date: 星期三, 14 四月 2021 17:34:08 +0800
Subject: [PATCH] 管网、环保设施、附属设施搜索定位

---
 src/components/LayerController/logic/PipeLineAnimal.js     |   28 ++++++++++++++
 src/conf/layers/LayerFsss.js                               |    2 
 src/conf/Constants.js                                      |    3 +
 src/components/LayerController/service/BusiLayerService.js |    3 +
 src/components/LayerController/service/LayerFactory.js     |   52 +++++++++++++++++++++-----
 src/components/panel/topicSearch/SewersSearch.vue          |   16 +++----
 src/components/helpers/WfsHelper.js                        |   10 +++--
 7 files changed, 88 insertions(+), 26 deletions(-)

diff --git a/src/components/LayerController/logic/PipeLineAnimal.js b/src/components/LayerController/logic/PipeLineAnimal.js
new file mode 100644
index 0000000..585147b
--- /dev/null
+++ b/src/components/LayerController/logic/PipeLineAnimal.js
@@ -0,0 +1,28 @@
+/**
+ *  绠$嚎鍔ㄧ敾鎺у埗閫昏緫
+ */
+const layerPipeLines = require('../../../conf/layers/LayerPipeLines').LayerPipeLines
+
+module.exports = function () {
+  this.init = (layer, L) => {
+    console.log('sssssss')
+    const layers = layerPipeLines.layers
+    for (var i = 0; i < layers.length; i++) {
+      const config = layers[i]
+      const code = config.code
+      const layer = window.layerFactory.layers[code]
+      layer.setStyle({
+        FILL: true,
+        WEIGHT: 3,
+        FILL_COLOR: '#73b2ff',
+        COLOR: '#73b2ff',
+        FILL_OPACITY: 0.2,
+        OPACITY: 1,
+        DASH_ARRAY: '4,4',
+        DASH_SPPED: -5,
+        ICON_SIZE: [10, 10]
+      })
+      console.log(layer)
+    }
+  }
+}
diff --git a/src/components/LayerController/service/BusiLayerService.js b/src/components/LayerController/service/BusiLayerService.js
index e8f8d03..0a8f958 100644
--- a/src/components/LayerController/service/BusiLayerService.js
+++ b/src/components/LayerController/service/BusiLayerService.js
@@ -13,9 +13,10 @@
   init (layer) {
     // 寮曞叆 鍏宠仈鐨刯s锛屽湪constant.js涓牴鎹甤onfig閰嶇疆鐨刬d寰楀埌澶勭悊js
     const id = this.config.code
+    console.log(id)
     const file = logicMapper[id]
     if (!file) {
-      console.log('鎵句笉鍒伴�昏緫澶勭悊js!!!')
+      console.log('鎵句笉鍒伴�昏緫澶勭悊js!!!' + id)
     } else {
       var BusiLayer = require('../logic/' + file)
       var busiLayer = new BusiLayer()
diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js
index 593b5fd..ae561e5 100644
--- a/src/components/LayerController/service/LayerFactory.js
+++ b/src/components/LayerController/service/LayerFactory.js
@@ -21,7 +21,7 @@
 
         var checked = config.checked
         checked && this.load(config)
-        checked && this.toggleZoomByConfnig(config)
+        checked && this.toggleZoomByConfig(config)
       }
     }
   }
@@ -43,14 +43,14 @@
         var childLayer = config.childLayer
         layers && this.toggleZoomByLayer(layers)
         childLayer && this.toggleZoomByLayer(childLayer)
-        this.toggleZoomByConfnig(config)
+        this.toggleZoomByConfig(config)
       }
     } else {
-      this.toggleZoomByConfnig(layerConfig)
+      this.toggleZoomByConfig(layerConfig)
     }
   }
 
-  toggleZoomByConfnig (config) {
+  toggleZoomByConfig (config) {
     const zoom = this.map.getZoom()
     var checked = config.checked
     if (checked && config.minZoom) {
@@ -112,25 +112,57 @@
 
   }
 
-  flyByLayerId (layerId, bound) {
-    for (var k in this.layers) {
+  flyByLayerId (code, id) {
+    const layer = this.layers[code]
+
+    if (layer.eachLayer) {
+      layer.eachLayer(function (layer) {
+        const layers = layer.getLayers()
+        for (var i = 0; i < layers.length; i++) {
+          const lay = layers[i]
+          const feature = lay.feature
+          lay.closePopup()
+          if (feature.id === id) {
+            lay.openPopup()
+            break
+          }
+        }
+      })
+    }
+    /* for (var k in this.layers) {
       var layerGroup = this.layers[k]
+      layerGroup.eachLayer(function (layer) {
+        console.log(layer)
+        console.log(layer.getAttribution())
+      })
       var layers = layerGroup.getLayers()
       if (layers) {
         for (var m = 0; m < layers.length; m++) {
           var layer = layers[m]
-          console.log(layer.toGeoJSON())
-          /* var feature = layer.feature
+          console.log(layer)
+          console.log(layer.getLayerId(val.id))
+          /!* var feature = layer.feature
           if (feature.id === layerId) {
             this.map.flyToBounds(bound)
             return layer
-          } */
+          } *!/
         }
       }
-    }
+    } */
     return null
   }
 
+  findLayerById (layer, id) {
+    const layers = layer.getLayers
+    if (layers) {
+      this.findLayerById(layer.getLayers(), id)
+    } else {
+      layer.eachLayer(function (layer) {
+        console.log(layer)
+      })
+    }
+  }
+
   /**
    * todo 杩欓噷鏃犳晥锛岃矊浼兼槸鍥犱负geojson鍔犺浇鍒板湴鍥句篃鏄釜layergroup
    *
diff --git a/src/components/helpers/WfsHelper.js b/src/components/helpers/WfsHelper.js
index b9cd594..20093e6 100644
--- a/src/components/helpers/WfsHelper.js
+++ b/src/components/helpers/WfsHelper.js
@@ -1,11 +1,11 @@
 /**
  * 鍔犺浇WMS,鎷兼帴FILTER,LAYERS鍙傛暟绛�
  */
-import MapConfig from '../../conf/MapConfig'
+import { PIPELINE_WFS } from '../../conf/Constants'
 function WfsHelper () {
   this.filters = []
   this.typeNames = []
-  this.url = MapConfig.PIPELINE_WFS
+  this.url = PIPELINE_WFS
   this.params = {
     REQUEST: 'getfeature',
     OUTPUTFORMAT: 'JSON',
@@ -23,8 +23,10 @@
   }
 
   this.addLike = (property, literal) => {
-    var filter = '<PropertyIsLike><PropertyName>' + property + '</PropertyName><Literal>*' + literal + '*</Literal></PropertyIsLike>'
-    this.filters.push(filter)
+    if (property && literal) {
+      var filter = '<PropertyIsLike><PropertyName>' + property + '</PropertyName><Literal>*' + literal + '*</Literal></PropertyIsLike>'
+      this.filters.push(filter)
+    }
   }
 
   /**
diff --git a/src/components/panel/topicSearch/SewersSearch.vue b/src/components/panel/topicSearch/SewersSearch.vue
index f32abb2..712dc17 100644
--- a/src/components/panel/topicSearch/SewersSearch.vue
+++ b/src/components/panel/topicSearch/SewersSearch.vue
@@ -17,13 +17,13 @@
               </el-select>
             </el-form-item>
             <el-form-item :label="form.pipelineType+'锛�'" size="mini">
-              <el-select style="width: 100%" v-model="form.dataType" :popper-class="'select-down'">
+              <el-select style="width: 100%" v-model="form.dataType" value-key="code" :popper-class="'select-down'">
                 <!--  @change="handleDataType"-->
                 <el-option
                     v-for="item in subItems"
                     :key="item.code"
                     :label="item.name"
-                    :value="item.name">
+                    :value="item">
                 </el-option>
               </el-select>
             </el-form-item>
@@ -37,13 +37,12 @@
         <el-scrollbar style="height:380.44px;">
           <div class="environmental-risk-list" v-for="(item,index) in list" :key="index">
             <div @click="handleLocation(item)">
-              <h3 class="B-TMD-table-list-title-y"
-                  :class="['B-TMD-table-list-title-y-nam', { 'warning': item.vehicleStatus==='910003' }, { 'offline': item.vehicleStatus==='910001' }]">
+              <h3 class="B-TMD-table-list-title-y">
                 {{ item.properties.pipename }}</h3>
-              <p v-for="itm in labelList" :key="itm.label">
+              <!--<p v-for="itm in labelList" :key="itm.label">
                 <span>{{ itm.label }}锛�</span>
                 <span :title="item.properties[itm.key] ">{{ item.properties[itm.key] }}</span>
-              </p>
+              </p>-->
             </div>
           </div>
         </el-scrollbar>
@@ -126,7 +125,7 @@
     async handleSearch () {
       var wfsHelper = new WfsHelper()
       // todo 鐜板湪绠$綉杩樻病鍖哄垎寮�绫诲瀷锛屽悗闈㈡敼
-      wfsHelper.addTypeName('绠$綉')
+      wfsHelper.addTypeName(this.form.dataType.name)
       wfsHelper.addLike('name', this.form.keyword)
       // const _this = this
       const res = await AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {})
@@ -136,10 +135,9 @@
       }
     },
     handleLocation (val) {
-      console.log(val)
       const bound = this.L.geoJSON([val], {}).getBounds()
-      // var layer = window.layerFactory.flyByLayerId(val.id, bound)
       window.map.flyToBounds(bound)
+      window.layerFactory.flyByLayerId(this.form.dataType.code, val.id)
       // layer && layer.openPopup()
     }
   }
diff --git a/src/conf/Constants.js b/src/conf/Constants.js
index f78ac95..d4c087e 100644
--- a/src/conf/Constants.js
+++ b/src/conf/Constants.js
@@ -10,7 +10,8 @@
   wasteGasPfk: 'WasteGas.js',
   wasteWaterPfk: 'WasteWater.js',
   wasteSolidCcd: 'SolidWaste.js',
-  sewersAreaGs: 'Company.js'
+  sewersAreaGs: 'Company.js',
+  pipesegment: 'PipeLineAnimal.js'
 }
 
 export const STYLES = {
diff --git a/src/conf/layers/LayerFsss.js b/src/conf/layers/LayerFsss.js
index 01a5615..4fb6a1d 100644
--- a/src/conf/layers/LayerFsss.js
+++ b/src/conf/layers/LayerFsss.js
@@ -54,7 +54,7 @@
       code: 'pipesegment',
       name: '娴佸悜',
       sname: 'ywslx',
-      wfs: WFS_URL + '?TYPENAME=娴佸悜',
+      url: 'pipesegment',
       checked: false
     },
     {

--
Gitblit v1.8.0