From 7f6291e80073c0c29f9d24bfdd3ac2602a059e70 Mon Sep 17 00:00:00 2001
From: chenyabin <Chenab123!>
Date: 星期二, 18 五月 2021 10:10:40 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/develop' into develop

---
 src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue     |   69 ++-
 public/assets/images/map/sewers/含油污水.png                                |    0 
 src/conf/layers/LayerPipeLines.js                                       |   11 
 src/components/LayerController/service/AnimalService.js                 |   13 
 src/components/layer/src/layer.vue                                      |    6 
 src/conf/layers/LayerArea.js                                            |    3 
 src/components/LayerController/logic/Company.js                         |   43 -
 src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue        |   20 
 src/components/panel/topicSearch/DischargeSearch.vue                    |    2 
 src/views/popup/Popup.vue                                               |   22 
 public/assets/images/map/sewers/防火堤.png                                 |    0 
 public/assets/images/map/sewers/含硫污水.png                                |    0 
 src/components/LayerController/service/WmsLayerService.js               |  157 --------
 src/conf/layers/LayerHbss.js                                            |    3 
 src/conf/Constants.js                                                   |  206 +++++++++-
 public/assets/images/map/sewers/含盐污水.png                                |    0 
 public/assets/images/map/sewers/净化水.png                                 |    0 
 src/components/LayerController/service/WmsLayerGroupService.js          |    1 
 src/utils/utils.js                                                      |   33 +
 public/assets/images/map/sewers/生产污水.png                                |    0 
 src/components/LayerController/logic/SourcesPollution.js                |   16 
 src/components/LayerController/logic/WasteGas.js                        |    7 
 public/assets/images/map/sewers/含碱污水.png                                |    0 
 src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue |   10 
 src/conf/layers/LayerFsss.js                                            |    3 
 public/assets/images/map/sewers/管架.png                                  |    0 
 src/views/MapTemplate.vue                                               |    8 
 src/components/LayerController/service/LayerFactory.js                  |  157 --------
 public/assets/images/map/sewers/流向.png                                  |    0 
 src/components/helpers/MapManager.js                                    |   59 +++
 public/assets/images/map/sewers/管廊.png                                  |    0 
 src/components/panel/topicSearch/SolidWasteSearch.vue                   |    5 
 public/assets/images/map/sewers/事故水.png                                 |    0 
 public/assets/images/map/sewers/循环水.png                                 |    0 
 /dev/null                                                               |   26 -
 src/conf/MapConfig.js                                                   |    1 
 public/assets/images/map/sewers/生活污水.png                                |    0 
 public/assets/images/map/sewers/装置区.png                                 |    0 
 src/components/LayerController/logic/WasteWater.js                      |   38 -
 src/components/panel/topicSearch/SewersSearch.vue                       |    9 
 public/assets/images/map/sewers/截流闸.png                                 |    0 
 src/components/LayerController/logic/WasteSolid.js                      |    7 
 public/assets/images/map/sewers/公司.png                                  |    0 
 src/components/helpers/LocateHelper.js                                  |  123 ++++++
 public/assets/images/map/sewers/溢流堰.png                                 |    0 
 src/components/layer/src/layer.js                                       |    4 
 46 files changed, 557 insertions(+), 505 deletions(-)

diff --git "a/public/assets/images/map/sewers/\344\272\213\346\225\205\346\260\264.png" "b/public/assets/images/map/sewers/\344\272\213\346\225\205\346\260\264.png"
new file mode 100644
index 0000000..a633444
--- /dev/null
+++ "b/public/assets/images/map/sewers/\344\272\213\346\225\205\346\260\264.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\345\205\254\345\217\270.png" "b/public/assets/images/map/sewers/\345\205\254\345\217\270.png"
new file mode 100644
index 0000000..0d202f5
--- /dev/null
+++ "b/public/assets/images/map/sewers/\345\205\254\345\217\270.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\345\207\200\345\214\226\346\260\264.png" "b/public/assets/images/map/sewers/\345\207\200\345\214\226\346\260\264.png"
new file mode 100644
index 0000000..d5359a1
--- /dev/null
+++ "b/public/assets/images/map/sewers/\345\207\200\345\214\226\346\260\264.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\345\220\253\346\262\271\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\345\220\253\346\262\271\346\261\241\346\260\264.png"
new file mode 100644
index 0000000..38b284c
--- /dev/null
+++ "b/public/assets/images/map/sewers/\345\220\253\346\262\271\346\261\241\346\260\264.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\345\220\253\347\233\220\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\345\220\253\347\233\220\346\261\241\346\260\264.png"
new file mode 100644
index 0000000..5c93042
--- /dev/null
+++ "b/public/assets/images/map/sewers/\345\220\253\347\233\220\346\261\241\346\260\264.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\345\220\253\347\241\253\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\345\220\253\347\241\253\346\261\241\346\260\264.png"
new file mode 100644
index 0000000..10705fb
--- /dev/null
+++ "b/public/assets/images/map/sewers/\345\220\253\347\241\253\346\261\241\346\260\264.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\345\220\253\347\242\261\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\345\220\253\347\242\261\346\261\241\346\260\264.png"
new file mode 100644
index 0000000..676138b
--- /dev/null
+++ "b/public/assets/images/map/sewers/\345\220\253\347\242\261\346\261\241\346\260\264.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\345\276\252\347\216\257\346\260\264.png" "b/public/assets/images/map/sewers/\345\276\252\347\216\257\346\260\264.png"
new file mode 100644
index 0000000..d3569e2
--- /dev/null
+++ "b/public/assets/images/map/sewers/\345\276\252\347\216\257\346\260\264.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\346\210\252\346\265\201\351\227\270.png" "b/public/assets/images/map/sewers/\346\210\252\346\265\201\351\227\270.png"
new file mode 100644
index 0000000..6790e49
--- /dev/null
+++ "b/public/assets/images/map/sewers/\346\210\252\346\265\201\351\227\270.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\346\265\201\345\220\221.png" "b/public/assets/images/map/sewers/\346\265\201\345\220\221.png"
new file mode 100644
index 0000000..b87b23d
--- /dev/null
+++ "b/public/assets/images/map/sewers/\346\265\201\345\220\221.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\346\272\242\346\265\201\345\240\260.png" "b/public/assets/images/map/sewers/\346\272\242\346\265\201\345\240\260.png"
new file mode 100644
index 0000000..81a8b47
--- /dev/null
+++ "b/public/assets/images/map/sewers/\346\272\242\346\265\201\345\240\260.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\347\224\237\344\272\247\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\347\224\237\344\272\247\346\261\241\346\260\264.png"
new file mode 100644
index 0000000..0897c51
--- /dev/null
+++ "b/public/assets/images/map/sewers/\347\224\237\344\272\247\346\261\241\346\260\264.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\347\224\237\346\264\273\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\347\224\237\346\264\273\346\261\241\346\260\264.png"
new file mode 100644
index 0000000..5165e20
--- /dev/null
+++ "b/public/assets/images/map/sewers/\347\224\237\346\264\273\346\261\241\346\260\264.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\347\256\241\345\273\212.png" "b/public/assets/images/map/sewers/\347\256\241\345\273\212.png"
new file mode 100644
index 0000000..e07d50f
--- /dev/null
+++ "b/public/assets/images/map/sewers/\347\256\241\345\273\212.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\347\256\241\346\236\266.png" "b/public/assets/images/map/sewers/\347\256\241\346\236\266.png"
new file mode 100644
index 0000000..0ade675
--- /dev/null
+++ "b/public/assets/images/map/sewers/\347\256\241\346\236\266.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\350\243\205\347\275\256\345\214\272.png" "b/public/assets/images/map/sewers/\350\243\205\347\275\256\345\214\272.png"
new file mode 100644
index 0000000..525d157
--- /dev/null
+++ "b/public/assets/images/map/sewers/\350\243\205\347\275\256\345\214\272.png"
Binary files differ
diff --git "a/public/assets/images/map/sewers/\351\230\262\347\201\253\345\240\244.png" "b/public/assets/images/map/sewers/\351\230\262\347\201\253\345\240\244.png"
new file mode 100644
index 0000000..33076a5
--- /dev/null
+++ "b/public/assets/images/map/sewers/\351\230\262\347\201\253\345\240\244.png"
Binary files differ
diff --git a/src/components/LayerController/event/EventHandler.js b/src/components/LayerController/event/EventHandler.js
deleted file mode 100644
index 2ab3cba..0000000
--- a/src/components/LayerController/event/EventHandler.js
+++ /dev/null
@@ -1,26 +0,0 @@
-
-class EventHandler {
-  constructor () {
-    this.map = window.map
-    this.mapClickForLayers = {}
-
-    window.map.on('click', (e) => {
-      console.log(e)
-      for (var k in this.mapClickForLayers) {
-        const func = this.mapClickForLayers[k]
-        console.log(func)
-        func(e)
-      }
-    })
-  }
-
-  addLayerEvent (config, callback) {
-    this.mapClickForLayers[config.code] = callback
-  }
-
-  removeEvent (config) {
-    delete this.mapClickForLayers[config.code]
-  }
-}
-
-export default EventHandler
diff --git a/src/components/LayerController/logic/Company.js b/src/components/LayerController/logic/Company.js
index 8c4bd07..d6b7ea2 100644
--- a/src/components/LayerController/logic/Company.js
+++ b/src/components/LayerController/logic/Company.js
@@ -1,6 +1,7 @@
 /**
- * 鍥哄簾
+ * 浼佷笟
  */
+
 // 鍖哄垎涓嶅悓绫诲瀷 浣跨敤涓嶅悓img
 const companyImg = '/assets/images/map/company_refining.png'
 const companyOil = '/assets/images/map/company_oil.png'
@@ -14,7 +15,6 @@
    * @param L leaflet瀵硅薄
    */
   this.init = async (layer, L) => {
-    // const SolidWasteIcon = this.SolidWasteIcon()
     this.animalService = new AnimalService({
       L: L,
       layer: layer
@@ -39,23 +39,10 @@
         className: 'company-bindTooltip',
         iconSize: 16
       })
-
       const marker = L.marker([positionX, positionY], {
-        /* icon: L.icon({
-          iconUrl: iconUrl,
-          iconSize: [30, 30],
-          iconAnchor: [15, 15]
-        }), */
         icon: myIcon,
         test: data[i]
       })
-      /* const htmls = '<ul><li>' + data[i].name + '</li></ul>'
-      marker.bindTooltip(htmls, {
-        permanent: true,
-        offset: [0, 5],
-        direction: 'bottom',
-        className: 'company-bindTooltip'
-      }) */
       layer.addLayer(marker)
     }
   }
@@ -63,23 +50,27 @@
   * 鐐逛綅榧犳爣绉诲叆寮规
   * */
   this.bindTooltip = (layer) => {
-  //  console.log(layer)
+    //  console.log(layer)
     return '<div class="company-bindTooltip-hover"><h3>姹℃煋鐗╀骇鐢熺粺璁�</h3><ul>' +
-                '<li>鐢熶骇璁炬柦锛�30锛堜釜锛�</li>' +
-                '<li>娌荤悊璁炬柦锛�30锛堜釜锛�</li>' +
-            '</ul></div>'// layer.options.test.name
+      '<li>鐢熶骇璁炬柦锛�30锛堜釜锛�</li>' +
+      '<li>娌荤悊璁炬柦锛�30锛堜釜锛�</li>' +
+      '</ul></div>'// layer.options.test.name
   }
   /*
   * 鐐逛綅鐐瑰嚮浜嬩欢
   *
   * */
   this.clickListener = (e) => {
-    // this.animalService.pulseEffect(e.latlng)
-    const dataValue = {
-      StoragePlaceId: e.layer.options.test.name
-    }
-    debugger
-    console.log(dataValue)
-    // return this.PublicBounced.$el
+    // console.log(e)
+    window.map.setView(e.latlng, 15)
+    // if (window.map.getZoom() >= 10) {
+    //   window.map.removeLayer(e.layer)
+    //   e.layer.remove()
+    // } else if (window.map.getZoom() < 10) {
+    //   window.map.addLayer(e.layer)
+    // }
+    // const dataValue = {
+    //   StoragePlaceId: e.layer.options.test.name
+    // }
   }
 }
diff --git a/src/components/LayerController/logic/SourcesPollution.js b/src/components/LayerController/logic/SourcesPollution.js
index a701f1c..27899ce 100644
--- a/src/components/LayerController/logic/SourcesPollution.js
+++ b/src/components/LayerController/logic/SourcesPollution.js
@@ -14,9 +14,23 @@
       layer: layer
     })
     const result = await mapApi.getSourcesPoll()
-    console.log(result)
+    // console.log(result)
     const resultData = result.Result.DataInfo || []
     const polygon = L.polygon(resultData, { color: 'yellow' })
     polygon.addTo(layer)
   }
+  this.bindTooltip = (layer) => {
+    return 'layer'
+  }
+  this.click = () => {
+    window.$layer.open({
+      content: {
+        content: 'Popup', // 缁勪欢
+        data: { // 浼犻�掔殑鍙傛暟
+          datas: 'popupDatas'
+        }
+      },
+      title: ''
+    })
+  }
 }
diff --git a/src/components/LayerController/logic/WasteGas.js b/src/components/LayerController/logic/WasteGas.js
index 17706bc..6c2fe65 100644
--- a/src/components/LayerController/logic/WasteGas.js
+++ b/src/components/LayerController/logic/WasteGas.js
@@ -3,7 +3,8 @@
  */
 const AnimalService = require('../service/AnimalService').default
 // const AjaxUtils = require('../../../utils/AjaxUtils').default
-
+// 鍏叡鏂规硶 panTo() 寮曠敤
+const { setPanTo } = require('../../../utils/utils')
 // 鍖哄垎涓嶅悓绫诲瀷 浣跨敤涓嶅悓img
 // const ImgBlue = '/assets/images/map/exhaust/fq_blue.png'
 // const ImgGray = '/assets/images/map/exhaust/fq_gray.png'
@@ -60,8 +61,9 @@
   }
 
   this.clickListener = async (e) => {
-    console.log(e)
+    // console.log(e)
     this.animalService.pulseEffect(e.latlng)
+    setPanTo(e.latlng, 200)
     const title = e.layer.options.test.Name
     const res = e.layer.options.test
     window.$layer.open({
@@ -74,7 +76,6 @@
       },
       title: '澶╂触鐭冲寲' + title // 鏍囬
     })
-    this.animalService.setPanTo(e.latlng, 150)
   }
   // 涓嶅悓绫诲瀷鍥剧墖鍔犺浇
   this.differentTypes = (ContrLevel) => {
diff --git a/src/components/LayerController/logic/WasteSolid.js b/src/components/LayerController/logic/WasteSolid.js
index 28b0938..1b9cd9c 100644
--- a/src/components/LayerController/logic/WasteSolid.js
+++ b/src/components/LayerController/logic/WasteSolid.js
@@ -5,7 +5,8 @@
 // 鍖哄垎涓嶅悓绫诲瀷 浣跨敤涓嶅悓img
 const defaultImg = '/assets/images/map/solidwaste/voc.png'
 const setting = '/assets/images/map/solidwaste/gf_green2.png'
-
+// 鍏叡鏂规硶 panTo() 寮曠敤
+const { setPanTo } = require('../../../utils/utils')
 // 璇锋眰鎺ュ彛鏁版嵁
 const mapApi = require('../../../api/mapApi').default
 // 浣跨敤灏佽鏂规硶
@@ -53,6 +54,8 @@
   this.clickListener = (e) => {
     // 鐐瑰嚮marker鐨刾ulse()鍏夋尝
     this.animalService.pulseEffect(e.latlng)
+    /* flyTo()寮瑰嚭妗嗗钩绉讳簨浠� */
+    setPanTo(e.latlng, 200)
     // 寮规鏍囬
     const title = e.layer.options.totransferData.Name
     window.$layer.open({
@@ -65,8 +68,6 @@
       },
       title: title // 鏍囬
     })
-    /* flyTo()寮瑰嚭妗嗗钩绉讳簨浠� */
-    this.animalService.setPanTo(e.latlng, 300)
   }
 
   // 涓嶅悓绫诲瀷鍥剧墖灏佽
diff --git a/src/components/LayerController/logic/WasteWater.js b/src/components/LayerController/logic/WasteWater.js
index 6f67ed6..267fe0a 100644
--- a/src/components/LayerController/logic/WasteWater.js
+++ b/src/components/LayerController/logic/WasteWater.js
@@ -1,13 +1,14 @@
 /**
  * 搴熸按
  */
-// import WasteWater from "../../table/components/WasteWater";
+
+// 鍏叡鏂规硶 panTo() 寮曠敤
+const { setPanTo } = require('../../../utils/utils')
 
 const AnimalService = require('../service/AnimalService').default
 const mapApi = require('../../../api/mapApi').default
 // 寮圭獥鏁版嵁寮曡繘
 const WasteWaterIndex = require('@components/BaseNav/WasteWater/WasteWaterIndex').default
-// const publicBounced = require('../../BaseNav/PublicBounced/PublicBounced').default
 
 const NormalImg = '/assets/images/map/wastewater/fs_bright_green.png' // 姝e父
 const OffImg = '/assets/images/map/wastewater/fs_gray.png' // 鍋滆繍
@@ -48,14 +49,13 @@
     }
   }
 
-  // 鍒嗗壊绾�-------------------------------------------------------------------------------
   this.bindTooltip = (layer) => {
     return '<div class="company-bindTooltip-hover"><h3>澶╂触鐭冲寲</h3></div>' + layer.options.totransferData.Name
   }
 
   this.clickListener = (e) => {
-    // 鐐瑰嚮marker鐨刾ulse()鍏夋尝
     this.animalService.pulseEffect(e.latlng)
+    setPanTo(e.latlng, 200)
     // 寮规鏍囬
     const title = e.layer.options.totransferData.Name
     const res = e.layer.options.totransferData
@@ -70,36 +70,6 @@
       },
       title: '澶╂触鐭冲寲' + title // 鏍囬
     })
-    this.animalService.setPanTo(e.latlng, 150)
-  }
-  this.requestWasteWaterData = async (e) => {
-    // 鍩烘湰淇℃伅 鍜� 璇︾粏淇℃伅 灞曠ず鏁版嵁鎵�闇�鍙傛暟
-    // const dataValue = {
-    //   StoragePlaceId: e.layer.options.test.StoragePlaceId
-    // }
-    // 寮规鏍囬
-    // const title = e.layer.options.totransferData.Name
-    // console.log(e.layer.options)
-    // 鍩烘湰淇℃伅 tabs
-    // const resultBasic = await mapApi.getWasteWater(dataValue)
-    // 鍥捐〃淇℃伅灞曠ず echarts
-    // 瀹炴椂鏁版嵁
-    // const resultReal = await mapApi.getDataItems(Value)
-    // 灏忔椂鏁版嵁 鍙� 鏄庣粏琛ㄦ暟鎹�
-    // const result = await mapApi.getQueryOnlineMonData(dataValue)
-    // 鏃ユ暟鎹� 鍙� 鏄庣粏琛ㄦ暟鎹�
-    // const result = await mapApi.getQueryOnlineMonData(dataValue)
-    // 浜哄伐鏁版嵁
-    // const resultEchart = await mapApi.getQueryLabMonData(dataValue)
-
-    // // 缁戝畾寮规瀹炰緥
-    // const PublicBounced = window.Vue.extend(publicBounced)
-    // const instance = new PublicBounced().$mount()
-    // document.body.appendChild(instance.$el)
-    // // document.body.removeChild(instance.$el)
-    // // 閫氳繃鏂规硶 鍚戠粦瀹氬脊妗嗕紶閫掓暟鎹�
-    // instance.setData(title, resultBasic.Result.DataInfo, resultDetailed.Result.DataInfo, 'gufei')
-    /* flyTo()寮瑰嚭妗嗗钩绉讳簨浠� */
   }
 
   // 鏍规嵁杩斿洖鍊肩殑涓嶅悓鏍囪涓嶅悓鍥剧墖
diff --git a/src/components/LayerController/service/AnimalService.js b/src/components/LayerController/service/AnimalService.js
index 3de6468..687b6e7 100644
--- a/src/components/LayerController/service/AnimalService.js
+++ b/src/components/LayerController/service/AnimalService.js
@@ -33,19 +33,6 @@
       }
     }, 1000)
   }
-
-  /**
-   * 璁剧疆寮圭獥骞崇Щ浣嶇疆
-   * @param pos
-   * @param value
-   */
-  setPanTo = (pos, value) => {
-    var position = pos
-    position = this.layer.latLngToLayerPoint(position)
-    position.y += value
-    position = this.layer.layerPointToLatLng(position)
-    this.layer.flyTo(position)
-  }
 }
 
 export default AnimalService
diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js
index 8d7c1c6..68d8d64 100644
--- a/src/components/LayerController/service/LayerFactory.js
+++ b/src/components/LayerController/service/LayerFactory.js
@@ -1,5 +1,4 @@
 import WfsLayerService from './WfsLayerService'
-import { clone, pulseEffect } from '../../../utils/utils'
 import { logicMapper, SERVICE_TYPE } from '../../../conf/Constants'
 import WmsLayerService from './WmsLayerService'
 
@@ -17,16 +16,14 @@
     this.layersLogic = {}
     this.minZoomLayers = {}
     this.wmsLayers = []
-    // todo 寰呬紭鍖栵紝wmslayerservice璋冪敤锛屾斁杩欓噷涓嶅悎閫�
-    this.clickSwitch = true // 鍥惧眰鐐瑰嚮寮圭獥寮�鍏�
-    this.hightlightLayer = options.L.featureGroup({}).addTo(window.map)
+    this.wmsLayerService = null
   }
 
   init (layerConfig) {
-    this.initConfig(layerConfig)
     // wms鏈嶅姟鍙渶瑕佸垵濮嬪寲涓�娆�
-    this.wmsLayerService = new WmsLayerService(this.wmsLayers)
+    this.wmsLayerService = new WmsLayerService()
     this.wmsLayerService.init()
+    this.initConfig(layerConfig)
   }
 
   initConfig (layerConfig) {
@@ -42,8 +39,8 @@
           wmsGroupLayerService.init()
           continue
         } */
-        layers && this.init(config.layers)
-        childLayer && this.init(config.childLayer)
+        layers && this.initConfig(config.layers)
+        childLayer && this.initConfig(config.childLayer)
 
         this.initMinZoom(config)
         this.loadLogic(config)
@@ -77,10 +74,6 @@
         logic = new BusiLayer()
       } else if (type === SERVICE_TYPE.WFS) {
         logic = new WfsLayerService(config)
-      } else if (type === SERVICE_TYPE.WMS) {
-        var layer = {}
-        layer[config.code] = config
-        this.wmsLayers.push(layer)
       }
     }
     this.layersLogic[code] = logic
@@ -167,146 +160,6 @@
           this.hide(config)
         }
       }
-    }
-  }
-
-  /**
-   *
-   * 鏍规嵁浼犵殑 feature瀵硅薄瀹氫綅锛�
-   * @param code
-   * @param feature
-   */
-  flyByFeature (feature, code) {
-    this.clearHighlight()
-    const type = feature.geometry.type
-    var point = []
-    switch (type) {
-      case 'Point':
-        point = feature.geometry.coordinates
-        break
-      case 'MultiLineString':
-        var coordinates = feature.geometry.coordinates
-        var coordinate = coordinates[parseInt(coordinates.length / 2)][0]
-        if (coordinate.length > 2) {
-          point = [coordinate[0], coordinate[1]]
-        }
-        break
-      case 'LineString':
-        var lineString = feature.geometry.coordinates
-        point = lineString[parseInt(lineString.length / 2)][0]
-        break
-    }
-    if (point.length > 2) {
-      point.splice(2, 1)
-    }
-    this.highlight(feature)
-    window.map.setView(clone(point).reverse(), 17)
-    code && this.openPopup(code, feature.id)
-  }
-
-  clearHighlight () {
-    this.hightlightLayer.clearLayers()
-  }
-
-  highlight (feature) {
-    const type = feature.geometry.type
-    if (type === 'MultiLineString') {
-      this.L.geoJSON(feature, {
-        style: function () {
-          return {
-            fillColor: 'red',
-            color: 'red'
-          }
-        }
-      }).addTo(this.hightlightLayer)
-    } else if (type === 'Point') {
-      let point = clone(feature.geometry.coordinates)
-      if (point.length > 2) {
-        point = [point[0], point[1]]
-      }
-      pulseEffect(point.reverse())
-      /* var myIcon = this.L.divIcon({ className: 'my-div-icon' })
-      this.L.marker(feature.geometry.coordinates.reverse(), {
-        icon: myIcon
-      }).addTo(this.hightlightLayer) */
-    } else if (type === 'LineString') {
-      this.L.polyline(this.reversePolyLine(feature), { color: 'red' }).addTo(this.hightlightLayer)
-    }
-  }
-
-  reverseMultiLine (feature) {
-    const coordinates = feature.geometry.coordinates
-    var latlng = []
-    for (var j = 0; j < coordinates.length; j++) {
-      const coordinate = coordinates[j]
-      var xy = []
-      for (var k = 0; k < coordinate.length; k++) {
-        const coor = coordinate[k]
-        xy.push(coor.reverse())
-      }
-      latlng.push(xy)
-    }
-    return latlng
-  }
-
-  reversePolyLine (feature) {
-    const coordinates = feature.geometry.coordinates
-    var latlng = []
-    for (var j = 0; j < coordinates.length; j++) {
-      const coordinate = coordinates[j]
-      latlng.push(coordinate.reverse())
-    }
-    return latlng
-  }
-
-  openPopup (layerId, id) {
-    const layer = this.layers[layerId]
-
-    if (layer) {
-      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)
-              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)
-      })
     }
   }
 }
diff --git a/src/components/LayerController/service/WmsLayerGroupService.js b/src/components/LayerController/service/WmsLayerGroupService.js
index 6f948d5..0955ffe 100644
--- a/src/components/LayerController/service/WmsLayerGroupService.js
+++ b/src/components/LayerController/service/WmsLayerGroupService.js
@@ -22,6 +22,7 @@
       this.L.tileLayer.wms(PIPELINE_WMS, {
         format: 'image/png', // 杩斿洖鐨勬暟鎹牸寮�
         transparent: true,
+        maxZoom: 21,
         layers: k // todo
       }).addTo(this.layer).bringToFront()
     }
diff --git a/src/components/LayerController/service/WmsLayerService.js b/src/components/LayerController/service/WmsLayerService.js
index fbc74bd..df7c090 100644
--- a/src/components/LayerController/service/WmsLayerService.js
+++ b/src/components/LayerController/service/WmsLayerService.js
@@ -1,6 +1,4 @@
-import AjaxUtils from '../../../utils/AjaxUtils'
 import { WMS_URL } from '../../../conf/Constants'
-import Popup from '@views/popup/Popup'
 import WmsLayerList from '../dataset/WmsLayerList'
 
 /**
@@ -21,6 +19,7 @@
       INFO_FORMAT: 'application/json',
       TRANSPARENT: true,
       FEATURE_COUNT: 50,
+      maxZoom: 21,
       SRS: 'EPSG:4326',
       EXCEPTIONS: 'application/vnd.ogc.se_inimage'
     }
@@ -29,40 +28,34 @@
     this.featureGroup = this.L.featureGroup({}).addTo(this.map)
 
     this.wmsLayerList = new WmsLayerList()
-    for (var i = 0; i < layersConfig.length; i++) {
-      const config = layersConfig[i]
-      this.wmsLayerList.addConfig(config)
+    if (layersConfig) {
+      for (var i = 0; i < layersConfig.length; i++) {
+        const config = layersConfig[i]
+        this.wmsLayerList.addConfig(config)
+      }
     }
     this.load()
   }
 
   init () {
-    this.clickListener()
   }
 
   add (config) {
     this.wmsLayerList.addConfig(config)
-    const layers = this.wmsLayerList.getLayers()
-    const filter = this.wmsLayerList.getFilters()
+    const layers = this.wmsLayerList.getLayers() || ''
+    const filter = this.wmsLayerList.getFilters() || ''
     const params = {}
-    if (filter) {
-      params.cql_filter = filter
-    }
-    if (layers) {
-      params.layers = layers
-    }
+    params.cql_filter = filter
+    params.layers = layers
     this.wmsLayer.setParams(params)
   }
 
   remove (config) {
-    console.log(config)
     this.wmsLayerList.remove(config.typeName, config.filter)
-    const layers = this.wmsLayerList.getLayers()
-    const filter = this.wmsLayerList.getFilters()
+    const layers = this.wmsLayerList.getLayers() || ''
+    const filter = this.wmsLayerList.getFilters() || ''
     const params = { layers: layers }
-    if (filter) {
-      params.cql_filter = filter
-    }
+    params.cql_filter = filter
     this.wmsLayer.setParams(params)
   }
 
@@ -81,130 +74,6 @@
       params.cql_filter = filter
     }
     this.wmsLayer = this.L.tileLayer.wms(WMS_URL, params).addTo(this.map)
-  }
-
-  clickListener () {
-    window.map.on('click', (e) => {
-      // console.log(e)
-      window.layerFactory.clearHighlight()
-      this.featureGroup.clearLayers()
-      var point = this.map.latLngToContainerPoint(e.latlng, this.map.getZoom())
-      var size = this.map.getSize()
-      // const bbox = this.L.latLngBounds(this.L.latLng(e.latlng.lng, e.latlng.lat)).toBBoxString()
-      const layers = this.wmsLayerList.getLayers()
-      const filter = this.wmsLayerList.getFilters()
-      if (layers.length > 0) {
-        const params = Object.assign({
-          LAYERS: layers,
-          QUERY_LAYERS: layers,
-          WIDTH: size.x,
-          HEIGHT: size.y,
-          X: Math.round(point.x),
-          Y: Math.round(point.y),
-          BBOX: this.map.getBounds().toBBoxString()
-        }, this.params)
-        if (filter.length > 0) {
-          params.cql_filter = filter
-        }
-        AjaxUtils.get4JsonDataByUrl(WMS_URL, params, (res) => {
-          const features = res.data.features
-          /**
-           * {
-           *     title: 'New Tab',
-           *     name: newTabName,
-           *     content: 'New Tab content'
-           * }
-           * @type {*[]}
-           */
-          const popupDatas = []
-          if (features) {
-            for (var i = 0; i < features.length; i++) {
-              const feature = features[i]
-              const properties = feature.properties
-              this.highlight(feature)
-              // const coordinates = feature.geometry.coordinates
-              popupDatas.push({
-                title: properties.wellname || properties.devicename || properties.name || properties.pipename,
-                name: feature.id,
-                content: properties
-              })
-            }
-          }
-          if (popupDatas.length > 0) {
-            var myIcon = this.L.divIcon({ className: 'my-div-icon' })
-            this.L.marker(e.latlng, {
-              icon: myIcon
-            }).addTo(this.featureGroup)/*
-              .bindPopup((layer) => {
-                this.popupComp.setDatas(popupDatas)
-                this.popupComp.setShow()
-                return this.popupComp.$el
-              }, {
-                className: 's-map-popup',
-                minWidth: 300,
-                closeButton: false,
-                autoClose: false
-              })
-              .openPopup() */
-
-            if (window.layerFactory.clickSwitch) {
-              window.$layer.open({
-                content: {
-                  content: Popup, // 缁勪欢
-                  data: { // 浼犻�掔殑鍙傛暟
-                    datas: popupDatas
-                  }
-                },
-                title: '', // 鏍囬
-                left: e.originalEvent.clientX,
-                top: e.originalEvent.clientY
-              })
-            }
-            // this.popupComp.setDatas(popupDatas)
-            // this.popupComp.setShow()
-          }
-        })
-      }
-    })
-  }
-
-  reverseMultiLine (feature) {
-    const coordinates = feature.geometry.coordinates
-    var latlng = []
-    for (var j = 0; j < coordinates.length; j++) {
-      const coordinate = coordinates[j]
-      var xy = []
-      for (var k = 0; k < coordinate.length; k++) {
-        const coor = coordinate[k]
-        xy.push(coor.reverse())
-      }
-      latlng.push(xy)
-    }
-    return latlng
-  }
-
-  reversePolyLine (feature) {
-    const coordinates = feature.geometry.coordinates
-    var latlng = []
-    for (var j = 0; j < coordinates.length; j++) {
-      const coordinate = coordinates[j]
-      latlng.push(coordinate.reverse())
-    }
-    return latlng
-  }
-
-  highlight (feature) {
-    const type = feature.geometry.type
-    if (type === 'MultiLineString') {
-      this.L.polyline(this.reverseMultiLine(feature), { color: 'red' }).addTo(this.featureGroup)
-    } else if (type === 'Point') {
-      var myIcon = this.L.divIcon({ className: 'my-div-icon' })
-      this.L.marker(feature.geometry.coordinates.reverse(), {
-        icon: myIcon
-      }).addTo(this.featureGroup)
-    } else if (type === 'LineString') {
-      this.L.polyline(this.reversePolyLine(feature), { color: 'red' }).addTo(this.featureGroup)
-    }
   }
 }
 
diff --git a/src/components/helpers/LocateHelper.js b/src/components/helpers/LocateHelper.js
new file mode 100644
index 0000000..4160b89
--- /dev/null
+++ b/src/components/helpers/LocateHelper.js
@@ -0,0 +1,123 @@
+import { pulseEffect, reversePolyLine } from '../../utils/utils'
+import Popup from '@views/popup/Popup'
+import { LAYERPROPS, LAYERS } from '../../conf/Constants'
+/**
+ * 鏍规嵁浼犵殑 feature瀵硅薄瀹氫綅锛�
+ * @param code
+ * @param feature
+ */
+export const fitBounds = function (feature) {
+  const type = feature.geometry.type
+  switch (type) {
+    case 'Point':
+      var point = feature.geometry.coordinates
+      point = [point[1], point[0]]
+      window.map.setView(point, 17)
+      break
+    case 'MultiLineString':
+      window.map.fitBounds(window.L.geoJSON(feature).getBounds())
+      break
+    case 'LineString':
+      window.map.fitBounds(window.L.polyline(reversePolyLine(feature)).getBounds())
+      break
+  }
+}
+
+export const highlight = function (feature, config) {
+  const L = window.L
+  const type = feature.geometry.type
+  window.mapManager.clearHighlight()
+  const highlightLayer = window.mapManager.hightlightLayer
+  if (type === 'MultiLineString') {
+    L.geoJSON(feature, {
+      style: function () {
+        return {
+          fillColor: 'red',
+          color: 'red'
+        }
+      }
+    }).addTo(highlightLayer)
+  } else if (type === 'Point') {
+    // 鍙犲姞涓�涓ぇ灏哄鐨勫浘鏍�
+    let point = feature.geometry.coordinates
+    point = [point[1], point[0]]
+
+    if (config) {
+      L.marker(point, {
+        icon: L.icon({
+          iconUrl: '/assets/images/map/' + config.icon,
+          iconSize: [30, 30],
+          iconAnchor: [15, 15]
+        })
+      }).addTo(highlightLayer)
+    }
+    pulseEffect(point)
+    const features = window.mapManager.loadWfsDatas(point)
+    openPopup(point, features)
+  } else if (type === 'LineString') {
+    L.polyline(reversePolyLine(feature), { color: 'red' }).addTo(highlightLayer)
+  }
+}
+
+export const openPopup = function (xy, features) {
+  const lt = window.map.latLngToContainerPoint(xy)
+  const datas = popupDatas(features)
+  if (datas.length > 0) {
+    window.$layer.open({
+      content: {
+        comp: Popup, // 缁勪欢
+        data: { // 浼犻�掔殑鍙傛暟
+          datas: datas
+        }
+      },
+      title: '', // 鏍囬
+      left: lt.x,
+      top: lt.y
+    })
+  }
+}
+
+const popupDatas = function (features) {
+  const datas = []
+  if (features) {
+    for (var i = 0; i < features.length; i++) {
+      const feature = features[i]
+      const id = feature.id
+      const properties = feature.properties
+      const ids = id.split('.')
+
+      const propValues = LAYERPROPS[ids[0]]
+      const contents = {}
+      for (const k in properties) {
+        if (propValues[k]) {
+          contents[propValues[k]] = properties[k]
+        }
+      }
+      datas.push({
+        title: LAYERS[ids[0]],
+        name: feature.id,
+        content: contents
+      })
+      console.log(properties)
+    }
+  }
+  return datas
+}
+
+export const getLayer = function (layerId, id) {
+  const layer = this.layers[layerId]
+
+  if (layer) {
+    layer.eachLayer(function (layer) {
+      const layers = layer.getLayers()
+      for (var i = 0; i < layers.length; i++) {
+        const lay = layers[i]
+        const feature = lay.feature
+        if (feature.id === id) {
+          return lay
+        }
+      }
+    })
+  }
+  return null
+}
diff --git a/src/components/helpers/MapManager.js b/src/components/helpers/MapManager.js
new file mode 100644
index 0000000..9795d33
--- /dev/null
+++ b/src/components/helpers/MapManager.js
@@ -0,0 +1,59 @@
+import AjaxUtils from '../../utils/AjaxUtils'
+import { WMS_URL } from '../../conf/Constants'
+import { openPopup } from './LocateHelper'
+
+class MapManager {
+  constructor () {
+    this.hightlightLayer = window.L.featureGroup({}).addTo(window.map)
+    this.clickDialogSwitch = true // 鍥惧眰鐐瑰嚮寮圭獥寮�鍏�
+    this.L = window.L
+    this.map = window.map
+    // wms getfeatureinfo 榛樿鍙傛暟
+    this.defaultWmsParams = {
+      VERSION: '1.1.1',
+      SERVICE: 'WMS',
+      REQUEST: 'GetFeatureInfo',
+      // bbox: bbox,
+      FORMAT: 'image/png',
+      INFO_FORMAT: 'application/json',
+      TRANSPARENT: true,
+      FEATURE_COUNT: 50,
+      SRS: 'EPSG:4326',
+      EXCEPTIONS: 'application/vnd.ogc.se_inimage'
+    }
+  }
+
+  mapClickListener () {
+    this.map.on('click', (e) => {
+      // console.log(e)
+      this.clearHighlight()
+      this.loadWfsDatas(e.latlng)
+    })
+  }
+
+  loadWfsDatas (latlng) {
+    const size = this.map.getSize()
+    var point = this.map.latLngToContainerPoint(latlng, this.map.getZoom())
+    const wmsLayerService = window.layerFactory.wmsLayerService
+    const layers = wmsLayerService.wmsLayerList.getLayers()
+    // const filters = wmsLayerService.wmsLayerList.getFilters()
+    const params = Object.assign({
+      LAYERS: layers,
+      QUERY_LAYERS: layers,
+      WIDTH: size.x,
+      HEIGHT: size.y,
+      X: Math.round(point.x),
+      Y: Math.round(point.y),
+      BBOX: this.map.getBounds().toBBoxString()
+    }, this.defaultWmsParams)
+    AjaxUtils.get4JsonDataByUrl(WMS_URL, params, (res) => {
+      openPopup(latlng, res.data.features)
+    })
+  }
+
+  clearHighlight () {
+    this.hightlightLayer.clearLayers()
+  }
+}
+
+export default MapManager
diff --git a/src/components/layer/src/layer.js b/src/components/layer/src/layer.js
index b0581c1..2bf291b 100644
--- a/src/components/layer/src/layer.js
+++ b/src/components/layer/src/layer.js
@@ -23,10 +23,12 @@
     console.log(opt)
     self.closeAll()
     var options = mergeJson(opt, defOptions)
+    console.log('11111' + options)
     const id = `notification_${new Date().getTime()}_${seed++}`
     options.id = id
     options.layer = self
-    options.content.content = Vue.extend(options.content.content)
+    options.content.comp = Vue.extend(options.content.comp)
+    console.log(options)
     const instance = new LayerVueExtend({
       data: options
     })
diff --git a/src/components/layer/src/layer.vue b/src/components/layer/src/layer.vue
index 3221a11..7877f0f 100644
--- a/src/components/layer/src/layer.vue
+++ b/src/components/layer/src/layer.vue
@@ -47,10 +47,8 @@
     },
     init () {
       const propsData = helper.deepClone(this.content.data) || {}
-      propsData.layerid = this.id
-      propsData.lydata = this.content.data
-      propsData.lyoption = this.options
-      const instance = new this.content.content({
+      console.log(propsData)
+      const instance = new this.content.comp({
         // parent: this.content.parent,
         propsData: propsData
       })
diff --git a/src/components/panel/topicSearch/DischargeSearch.vue b/src/components/panel/topicSearch/DischargeSearch.vue
index f0fd797..f29036a 100644
--- a/src/components/panel/topicSearch/DischargeSearch.vue
+++ b/src/components/panel/topicSearch/DischargeSearch.vue
@@ -170,7 +170,7 @@
   methods: {
     flyto () {
       const pos = [39.90751504898071, 116.38927817344666]
-      window.map.flyTo(pos, 15)
+      window.map.setView(pos, 15)
     },
     // 鍖哄煙绛涢��
     areaType (val) {
diff --git a/src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue b/src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue
index 873db6e..fb1eb41 100644
--- a/src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue
+++ b/src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue
@@ -26,7 +26,8 @@
                 </el-form-item>
                 <el-form-item label="浜嬩欢绫诲瀷锛�">
                     <el-radio-group v-model="form.transferData" class="levelOfRisk">
-                        <el-radio v-for="(item,index) in form.levelOfRisk" :label="item.value" :key="index">
+                        <el-radio v-for="(item,index) in form.levelOfRisk" :label="item.value" :key="index"
+                                  @change="redioChange(item.name)">
                             <span class="levelOfRisk-type">{{ item.name }}</span>
                         </el-radio>
                     </el-radio-group>
@@ -38,12 +39,28 @@
             </el-form>
         </el-form>
         <el-scrollbar style="height:286.22px">
-            <div class="environmental-risk-list" v-for="(item,index) in list" :key="index"
-                 :class="activeNum===index?'hover':''">
+            <!--            <div class="environmental-risk-list" v-for="(item,index) in list" :key="index" :class="activeNum===index?'hover':''" @click="accordPopup(item)">-->
+            <!--                &lt;!&ndash;                <i class="state"></i>&ndash;&gt;-->
+            <!--                <img class="state" :src="getImgSrc(item.properties.type)" style="background: none"/>-->
+            <!--                <div>-->
+            <!--                    <h3 @click="handleLocation(item,index)">浜嬩欢鍚嶇О:XXX浜嬩欢</h3>-->
+            <!--                    <h5>-->
+            <!--                        浜嬩欢浜嬩欢:2021骞�3鏈�21鏃�-->
+            <!--                        <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;">鍒犻櫎</el-button>-->
+            <!--                    </h5>-->
+            <!--                    <p>-->
+            <!--                        浜嬩欢鐘舵�侊細<span>瀹℃壒闃舵</span>-->
+            <!--                    </p>-->
+            <!--                    <p>浜嬩欢绫诲瀷锛�<span>{{ item.properties.pipecode }}</span>-->
+            <!--                        <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;">浜嬩欢绠$悊-->
+            <!--                        </el-button>-->
+            <!--                    </p>-->
+            <!--                </div>-->
+            <!--            </div>-->
+            <div class="environmental-risk-list">
                 <!--                <i class="state"></i>-->
-                <img class="state" :src="getImgSrc()" style="background: none"/>
                 <div>
-                    <h3 @click="handleLocation(item,index)">浜嬩欢鍚嶇О:XXX浜嬩欢</h3>
+                    <h3>浜嬩欢鍚嶇О:XXX浜嬩欢</h3>
                     <h5>
                         浜嬩欢浜嬩欢:2021骞�3鏈�21鏃�
                         <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;">鍒犻櫎</el-button>
@@ -51,8 +68,10 @@
                     <p>
                         浜嬩欢鐘舵�侊細<span>瀹℃壒闃舵</span>
                     </p>
-                    <p>浜嬩欢绫诲瀷锛�<span>{{ item.properties.pipecode }}</span>
-                        <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;">浜嬩欢绠$悊
+                    <p>浜嬩欢绫诲瀷锛�<span>妯℃嫙绠$嚎浜嬩欢</span>
+                        <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;"
+                                   @click="accordPopup()">
+                            <span>浜嬩欢绠$悊</span>
                         </el-button>
                     </p>
                 </div>
@@ -106,13 +125,34 @@
     this.wfsHelper = new WfsHelper()
   },
   methods: {
+    // 鐐瑰嚮浜嬩欢绠$悊
+    accordPopup () {
+      console.log('item')
+      window.$layer.open({
+        content: {
+          content: ReportPopup, // 缁勪欢
+          parent: this, // 鐖剁粍浠�
+          data: { // 浼犻�掔殑鍙傛暟
+            // storagePlaceId: e.layer.options.totransferData.StoragePlaceId
+          }
+        }
+        // title: 'title' // 鏍囬
+      })
+    },
+    // radio鏁版嵁閫夋嫨
+    redioChange (item) {
+      console.log(item)
+    },
+    // 鏍规嵁鏁版嵁杩斿洖灞曠ず涓嶅悓鐨勫浘鐗�
     getImgSrc () {
       const icon = this.form.dataType.icon
       return icon ? 'assets/images/map/' + icon : ''
     },
+    // form 2 琛ㄥ崟鏁版嵁閫夋嫨浜嬩欢
     handleDataType () {
       this.list = []
     },
+    // form 琛ㄥ崟鏁版嵁閫夋嫨
     handlePipelineType (val) {
       this.list = []
       for (let i = 0; i < this.items.length; i++) {
@@ -123,6 +163,7 @@
         }
       }
     },
+    // 鏁版嵁鎼滅储浜嬩欢
     async handleSearch () {
       this.list = []
       this.wfsHelper.clearFilter()
@@ -137,25 +178,13 @@
         this.list = res.features
       }
     },
+    // 鎼滅储鐨勬暟鎹偣鍑讳簨浠�
     handleLocation (val, index) {
       console.log(val)
       this.activeNum = index
       // layer && layer.openPopup()
       // window.layerFactory.flyByFeature(val, this.form.dataType.code)
       window.map.flyTo([val.properties.y, val.properties.x], 15)
-    },
-    btnAffiliatedFacilities () {
-      console.log('item')
-      window.$layer.open({
-        content: {
-          content: ReportPopup, // 缁勪欢
-          parent: this, // 鐖剁粍浠�
-          data: { // 浼犻�掔殑鍙傛暟
-            // storagePlaceId: e.layer.options.totransferData.StoragePlaceId
-          }
-        }
-        // title: 'title' // 鏍囬
-      })
     }
   }
 }
diff --git a/src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue b/src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue
index 40bc1b5..3c9a2ee 100644
--- a/src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue
+++ b/src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue
@@ -43,8 +43,8 @@
             <div class="environmental-risk-list" v-for="(item,index) in list" :key="index"
                  :class="activeNum===index?'hover':''" @click="handleLocation(item,index)">
                 <img class="state" :src="getImgSrc(item.properties.type)" style="background: none"/>
-                <h3>璧勬簮绫诲瀷:{{item.properties.adminzonename}}</h3>
-                <h5>璧勬簮鍚嶇О:{{item.properties.type}}</h5>
+                <h3>{{changeAmount}}绫诲瀷:{{item.properties.type}}</h3>
+                <h5>{{changeAmount}}鍚嶇О:{{item.properties.name}}</h5>
                 <p>璐熻矗浜�:<span>{{item.properties.resperson}}</span></p>
                 <p>鐢佃瘽:<span>{{item.properties.telephone}}</span></p>
             </div>
@@ -78,7 +78,8 @@
       list: [],
       items: [LayerEmergencySource, LayerSurroundings],
       subItems: LayerEmergencySource.layers || LayerSurroundings.layers,
-      WfsHelper: null
+      WfsHelper: null,
+      changeAmount: '璧勬簮'
     }
   },
   mounted () {
@@ -102,8 +103,10 @@
       }
       if (this.form.pipelineType === '搴旀�ヨ祫婧�') {
         this.subItems = LayerEmergencySource.layers
+        this.changeAmount = '璧勬簮'
       } else if (this.form.pipelineType === '鍛ㄨ竟鐜') {
         this.subItems = LayerSurroundings.layers
+        this.changeAmount = '鐜'
       }
     },
     handleDataType (val) {
@@ -125,6 +128,7 @@
         this.wfsHelper.addLike('name', this.form.keyword)
       }
       const res = await AjaxUtils.GetDataAsynByUrl(this.wfsHelper.getUrl(), {})
+      console.log(res)
       if (res instanceof Object && Object.prototype.hasOwnProperty.call(res, 'features')) {
         this.list = res.features
       }
diff --git a/src/components/panel/topicSearch/SewersSearch.vue b/src/components/panel/topicSearch/SewersSearch.vue
index ad48f87..03c28d5 100644
--- a/src/components/panel/topicSearch/SewersSearch.vue
+++ b/src/components/panel/topicSearch/SewersSearch.vue
@@ -83,6 +83,7 @@
 // 寮曞叆缁勪欢鍐呭
 import SewersAnalysis from '@components/panel/topicSearch/SewersSelect/SewersAnalysis'
 import SewersHistory from '@components/panel/topicSearch/SewersSelect/SewersHistory'
+import { fitBounds, highlight } from '../../helpers/LocateHelper'
 
 export default {
   name: 'SewersSearch',
@@ -161,11 +162,12 @@
       }
     },
     handleLocation (val, index) {
-      console.log(val)
+      console.log(this.form.dataType)
       // console.log(val)
       this.activeNum = index
       // layer && layer.openPopup()
-      window.layerFactory.flyByFeature(val, this.form.dataType.code)
+      fitBounds(val, this.form.dataType.code)
+      highlight(val, this.form.dataType)
     },
     btnAffiliatedFacilities (val, index) {
       this.activeNum = index
@@ -176,7 +178,8 @@
       } else {
         this.fuShuSheShiShow = false
       }
-      window.layerFactory.flyByFeature(val, this.form.dataType.code)
+      fitBounds(val, this.form.dataType.code)
+      highlight(val)
     }
   },
   mounted () {
diff --git a/src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue b/src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue
index 9b9785b..71cc2fb 100644
--- a/src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue
+++ b/src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue
@@ -439,10 +439,10 @@
         this.linkPipeline.push(line)
       })
     },
-    // 杩為�氭�� 鍒嗘瀽缁撴灉table鍒楄〃鏁版嵁閫夋嫨鐐瑰嚮浜嬩欢
+    // 瀹氫綅鏂规硶浜嬩欢
     linkResultSelect (e) {
       // console.log('杩為�氭�у垎鏋愮粨鏋滃垪琛ㄧ偣鍑�')
-      // console.log(e)
+      console.log(e)
       const geom = JSON.parse(e.geomText)
       if (this.currentSelectResultLine != null) {
         this.currentSelectResultLine.remove()
@@ -483,8 +483,8 @@
       this.selectPipeLine()
     },
     async bgSelect (e) {
-      console.log('閫夋嫨鐖嗙绠℃')
-      console.log(e)
+      // console.log('閫夋嫨鐖嗙绠℃')
+      // console.log(e)
       this.bgFm = []
       if (this.bgMarker != null) {
         this.bgMarker.remove()
@@ -526,12 +526,10 @@
 
       this.bgPoint = res.data[0].startControlPoint
 
-      const point = JSON.parse(this.bgPoint.geomText)
-
-      const p = [point.coordinates[1], point.coordinates[0]]
-
+      // const point = JSON.parse(this.bgPoint.geomText)
+      // const p = [point.coordinates[1], point.coordinates[0]]
       // this.bgMarker = this.createFlowMarker(p)
-      this.bgMarker = pulseEffect(p)
+      // this.bgMarker = pulseEffect(p)
       // this.bgMarker.bindTooltip(this.bgPoint.pointnumbe)
       // this.bgMarker.addTo(window.map)
       // window.map.flyTo(p)
@@ -561,11 +559,11 @@
     },
     bgFmClick (e) {
       // console.log('鐐瑰嚮褰卞搷鐨勯榾闂�')
-      console.log(e)
+      // console.log(e)
       // const point = [e.data[0][0], e.data[0][1]]
       const point = [e.startControlPoint.y, e.startControlPoint.x]
-      // const marker = this.createFlowMarker(point)
       pulseEffect(point)
+      // const marker = this.createFlowMarker(point)
       // marker.addTo(window.map)
       // window.map.flyTo(point, 17)
     },
diff --git a/src/components/panel/topicSearch/SolidWasteSearch.vue b/src/components/panel/topicSearch/SolidWasteSearch.vue
index e536771..cc8a508 100644
--- a/src/components/panel/topicSearch/SolidWasteSearch.vue
+++ b/src/components/panel/topicSearch/SolidWasteSearch.vue
@@ -30,7 +30,6 @@
         <el-scrollbar style="height:286.22px">
             <div class="environmental-risk-list" v-for="(item,index) in searchDataDisplay" :key="index"
                  @click="setBounced(item)">
-                <!--        <i class="state"></i>-->
                 <img src="../../../../public/assets/images/map/solidwaste/gf_green2.png" alt="" class="state">
                 <div>
                     <h3>###鐐煎寲閮�</h3>
@@ -159,7 +158,7 @@
     },
     // 鏁版嵁灞曠ず,鐐瑰嚮杩涜寮规鍙婄偣鐨勫睍绀�
     setBounced (val) {
-      // console.log(val)
+      console.log(val)
       const pos = [val.Latitude, val.Longitude]
       window.map.setView(pos, 15)
       window.$layer.open({
@@ -173,7 +172,7 @@
         title: val.Name
       })
       pulseEffect([val.Latitude, val.Longitude])
-      setPanTo(pos, 250)
+      setPanTo(pos, 200)
     }
   }
 }
diff --git a/src/conf/Constants.js b/src/conf/Constants.js
index 3bab997..0935f69 100644
--- a/src/conf/Constants.js
+++ b/src/conf/Constants.js
@@ -35,35 +35,179 @@
   ICON_SIZE: [10, 10]
 }
 
-export const props = {
-  code: '缂栧彿',
-  name: '鍚嶇О',
-  teamname: '鍚嶇О',
-  pfktype: '鎺掓斁鍙g被鍨�',
-  level: '绾у埆',
-  length: '闀垮害(m)',
-  unitname: '鍗曚綅鍚嶇О',
-  pipename: '绠$嚎鍚嶇О',
-  subchaname: '鏀嚎鍚嶇О',
-  subchacode: '鏀嚎缂栫爜',
-  mediumtype: '杈撻�佷粙璐�',
-  startposname: '璧风偣浣嶇疆鍚嶇О',
-  endposname: '缁堢偣浣嶇疆鍚嶇О',
-  pressureating: '璁捐鍘嬪姏锛圡Pa锛�',
-  designtranyear: '璁捐杈撻噺锛堜竾绔�/骞达級',
-  earningcapacity: '瀹為檯杈撻噺锛堜竾绔�/骞达級',
-  buriedtime: '鍩嬭鏃堕棿',
-  coatingmaterial: '闃茶厫鐘跺喌',
-  inservicetime: '鎶曚骇鏃堕棿',
-  reportname: '濉姤浜哄鍚�',
-  reportphone: '濉姤浜鸿仈绯绘柟寮�',
-  diameter: '绠″緞(mm)',
-  meterial: '鏉愯川',
-  pressuerating: '绠¢亾鍘嬪姏(Mpa)',
-  embeddingmode: '鍩嬭鏂瑰紡',
-  pipetrenchtype: '绠℃矡绫诲瀷',
-  datecollected: '鎺㈡祴鏃堕棿',
-  operationalstatus: '杩愯鐘舵��',
-  fourtype: '鍥涢�氱被鍨�',
-  fourm: '鍥涢�氭潗鏂�'
+export const LAYERS = {
+  pipenetwork: '绠$綉',
+  pipeline: '绠$嚎',
+  manhole: '绐ㄤ簳',
+  valve: '闃�闂�',
+  pipegallery: '绠″粖锛堝甫锛�',
+  piperack: '绠℃灦锛堝ⅸ锛�',
+  tee: '涓夐��',
+  fourlink: '鍥涢��',
+  elbow: '寮ご',
+  raingate: '闆ㄧ瀛�',
+  firedike: '闃茬伀鍫�',
+  collectingbasin: '闆嗘按姹狅紙缃愶級',
+  dischargeport: '鎺掓斁鍙�',
+  overflowweir: '婧㈡祦鍫�',
+  oilseparator: '闅旀补姹�',
+  pointhydrology: '姘翠綋',
+  pointpreservationzone: '鑷劧淇濇姢鍖�',
+  hospital: '鍖婚櫌',
+  emergencyres: '绀句細涓撲笟搴旀�ユ晳鎻撮槦浼�',
+  emergencyesources: '搴旀�ョ墿璧�',
+  firefightingunit: '娑堥槻鍗曚綅'
+}
+
+export const LAYERPROPS = {
+  // 绠$綉
+  pipenetwork: {
+    // 绠$綉
+    name: '鍚嶇О',
+    LINENUMTYPE: '绠$嚎绫诲瀷',
+    PIPENAME: '绠$嚎鍚嶇О',
+    MEDIUMTYPE: '杈撻�佷粙璐�',
+    LENGTH: '闀垮害(m)',
+    STARTPOSNAME: '璧风偣浣嶇疆鍚嶇О',
+    ENDPOSNAME: '缁堢偣浣嶇疆鍚嶇О',
+    BURIEDTIME: '鍩嬭鏃堕棿',
+    COATINGMATERIAL: '闃茶厫鐘跺喌',
+    INSERVICETIME: '鎶曚骇鏃堕棿',
+    UNITNAME: '鎵�灞炲崟浣嶅悕绉�',
+    ORGNAME: '鎵�灞炰紒涓氬悕绉�',
+    OPERATIONALSTATUS: '杩愯鐘舵��'
+  },
+  // 绠$嚎
+  pipeline: {
+    // 绠$綉
+    name: '鍚嶇О',
+    linenumtype: '绠$嚎绫诲瀷',
+    pipename: '绠$嚎鍚嶇О',
+    mediumtype: '杈撻�佷粙璐�',
+    length: '闀垮害(m)',
+    startposname: '璧风偣浣嶇疆鍚嶇О',
+    endposname: '缁堢偣浣嶇疆鍚嶇О',
+    buriedtime: '鍩嬭鏃堕棿',
+    coatingmaterial: '闃茶厫鐘跺喌',
+    inservicetime: '鎶曚骇鏃堕棿',
+    unitname: '鎵�灞炲崟浣嶅悕绉�',
+    orgname: '鎵�灞炰紒涓氬悕绉�',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 绐ㄤ簳
+  manhole: {
+    type: '绫诲瀷',
+    wellmaterial: '浜曠洊鏉愯川',
+    havesafetynet: '鏄惁鏈夊畨鍏ㄧ綉',
+    datasource: '鏁版嵁鏉ユ簮',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 闃�闂�
+  valve: {
+    valvetype: '闃�闂ㄧ被鍨�',
+    executagencyf: '鎵ц鏈烘瀯褰㈠紡',
+    datasource: '鏁版嵁鏉ユ簮',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 绠″粖锛堝甫锛�
+  pipegallery: {
+    datasource: '鏁版嵁鏉ユ簮',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 绠℃灦锛堝ⅸ锛�
+  piperack: {
+    piperacktype: '绫诲瀷',
+    piperackst: '绠℃灦(澧╋級缁撴瀯绫诲瀷',
+    longitudinalpiperack: '鏄惁鏈夌旱鍚戞灦',
+    datasource: '鏁版嵁鏉ユ簮',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 涓夐��
+  tee: {
+    teetype: '涓夐�氱被鍨�',
+    exportconnectm: '鍑哄彛杩炴帴鏂瑰紡',
+    entrycontype: '鍏ュ彛杩炴帴鏂瑰紡',
+    teem: '涓夐�氭潗鏂�',
+    branchconntype: '鏀杩炴帴绫诲瀷',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 鍥涢��
+  fourlink: {
+    fourtype: '鍥涢�氱被鍨�',
+    exportcontype: '鍑哄彛杩炴帴鏂瑰紡',
+    entrycontype: '鍏ュ彛杩炴帴鏂瑰紡',
+    fourm: '鍥涢�氭潗鏂�',
+    branchconntype1: '鏀嚎1杩炴帴鏂瑰紡',
+    branchconntype2: '鏀嚎2杩炴帴鏂瑰紡',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 寮ご
+  elbow: {
+    elbowtype: '寮ご绫诲瀷',
+    elbowmaterial: '寮ご鏉愭枡',
+    anticorros: '闃茶厫鏉愭枡',
+    entryconntype: '鍏ュ彛杩炴帴鏂瑰紡',
+    outletconntype: '鍑哄彛杩炴帴鏂瑰紡',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 闆ㄧ瀛�
+  raingate: {
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 闃茬伀鍫�
+  firedike: {
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 闆嗘按姹狅紙缃愶級
+  collectingbasin: {
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 鎺掓斁鍙�
+  dischargeport: {
+    mediumtype: '浠嬭川',
+    pfktype: '鎺掓斁鍙g被鍨�',
+    level: '绾у埆',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 鎴祦闂�
+
+  // 婧㈡祦鍫�
+  overflowweir: {
+    mediumtype: '闃叉孩浠嬭川',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 闅旀补姹�
+  oilseparator: {
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 姘翠綋
+  pointhydrology: {
+    hydrotype: '姘寸郴绫诲瀷',
+    drinkingresourceind: '鏄惁鏄ギ鐢ㄦ按婧�',
+    seasonalriverind: '鏄惁鏄鑺傛�ф渤娴�',
+    reservoirlocation: '姘村簱浣嶇疆',
+    operationalstatus: '杩愯鐘舵��'
+  },
+  // 鑷劧淇濇姢鍖�
+  pointpreservationzone: {
+    datasource: '鏁版嵁鏉ユ簮'
+  },
+  // 鍖婚櫌
+  hospital: {
+    hospitalleaval: '鍖婚櫌璧勮川绛夌骇',
+    subtypecd: '鍖婚櫌绫诲瀷',
+    datasource: '鏁版嵁鏉ユ簮'
+  },
+  // 绀句細涓撲笟搴旀�ユ晳鎻撮槦浼�
+  emergencyres: {
+    datasource: '鏁版嵁鏉ユ簮'
+  },
+  // 搴旀�ョ墿璧�
+  emergencyesources: {
+    datasource: '鏁版嵁鏉ユ簮'
+  },
+  // 娑堥槻鍗曚綅
+  firefightingunit: {
+    datasource: '鏁版嵁鏉ユ簮'
+  }
 }
diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js
index ec1f64e..4cae2f1 100644
--- a/src/conf/MapConfig.js
+++ b/src/conf/MapConfig.js
@@ -23,7 +23,6 @@
   crs: L.CRS.EPSG4326,
   minZoom: 3,
   maxZoom: 21,
-  // center: [26, 104],
   center: [34.828558921813965, 117.41676807403564],
   zoom: 5,
   // center: [39.907214641571045, 116.39019012451172],
diff --git a/src/conf/layers/LayerArea.js b/src/conf/layers/LayerArea.js
index 5a2106c..c4d82db 100644
--- a/src/conf/layers/LayerArea.js
+++ b/src/conf/layers/LayerArea.js
@@ -13,6 +13,7 @@
       sname: '鍏徃', // 琛ㄥ悕
       checked: true, // 榛樿閫変腑鐘舵��
       type: 0,
+      icon: 'sewers/鍏徃.png',
       legendImage: '../.././assets/images/map/company_refining.png'
     },
     {
@@ -21,6 +22,7 @@
       sname: '鐮佸ご',
       checked: false, // 榛樿閫変腑鐘舵��
       type: 0,
+      icon: 'sewers/鐮佸ご.png',
       legendImage: '../.././assets/images/map/sewers/鐮佸ご.png'
     },
     {
@@ -28,6 +30,7 @@
       name: '瑁呯疆鍖�',
       sname: '瑁呯疆鍖�',
       checked: false, // 榛樿閫変腑鐘舵��
+      icon: 'sewers/瑁呯疆鍖�.png',
       typeName: 'sewer:unitareaboundary'
     }
   ]
diff --git a/src/conf/layers/LayerFsss.js b/src/conf/layers/LayerFsss.js
index b0e4350..9ab0a79 100644
--- a/src/conf/layers/LayerFsss.js
+++ b/src/conf/layers/LayerFsss.js
@@ -47,6 +47,7 @@
       minZoom: 16,
       type: SERVICE_TYPE.WMS,
       typeName: 'sewer:piperack',
+      icon: 'sewers/绠℃灦.png',
       checked: false
     },
     {
@@ -56,6 +57,7 @@
       minZoom: 16,
       type: SERVICE_TYPE.WMS,
       typeName: 'sewer:pipegallery',
+      icon: 'sewers/绠″粖.png',
       checked: false
     },
     {
@@ -63,6 +65,7 @@
       name: '娴佸悜',
       sname: 'ywslx',
       type: SERVICE_TYPE.WMS,
+      icon: 'sewers/娴佸悜.png',
       checked: false
     },
     {
diff --git a/src/conf/layers/LayerHbss.js b/src/conf/layers/LayerHbss.js
index 7727670..54f61f7 100644
--- a/src/conf/layers/LayerHbss.js
+++ b/src/conf/layers/LayerHbss.js
@@ -35,6 +35,7 @@
       minZoom: 16,
       type: SERVICE_TYPE.WMS,
       typeName: 'sewer:firedike',
+      icon: 'sewers/闃茬伀鍫�.png',
       checked: false
     },
     {
@@ -53,6 +54,7 @@
       sname: '鎴祦闂�',
       type: SERVICE_TYPE.WMS,
       typeName: 'sewer:collectingbasin',
+      icon: 'sewers/鎴祦闂�.png',
       checked: false
     },
     {
@@ -62,6 +64,7 @@
       minZoom: 16,
       type: SERVICE_TYPE.WMS,
       typeName: 'ewer:overflowweir',
+      icon: 'sewers/婧㈡祦鍫�.png',
       checked: false
     },
     {
diff --git a/src/conf/layers/LayerPipeLines.js b/src/conf/layers/LayerPipeLines.js
index bbccde9..476db82 100644
--- a/src/conf/layers/LayerPipeLines.js
+++ b/src/conf/layers/LayerPipeLines.js
@@ -17,7 +17,7 @@
       code: 'rainline',
       name: '闆ㄦ按绾�',
       sname: '绠$綉',
-      checked: false,
+      checked: true,
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
@@ -40,6 +40,7 @@
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
+      icon: 'sewers/浜嬫晠姘�.png',
       minZoom: 13,
       filter: 'mediumtype = \'浜嬫晠姘碶'',
       index: 1
@@ -52,6 +53,7 @@
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
+      icon: 'sewers/鍚补姹℃按.png',
       minZoom: 13,
       color: '#ffaa00',
       filter: 'mediumtype = \'鍚补姹℃按\'',
@@ -69,6 +71,7 @@
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
+      icon: 'sewers/鍚洂姹℃按.png',
       minZoom: 13,
       filter: 'mediumtype = \'鍚洂姹℃按\'',
       index: 1
@@ -81,6 +84,7 @@
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
+      icon: 'sewers/鍚⒈姹℃按.png',
       filter: 'mediumtype = \'鍚⒈姹℃按\'',
       minZoom: 10,
       index: 1
@@ -93,6 +97,7 @@
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
+      icon: 'sewers/鍚~姹℃按.png',
       filter: 'mediumtype = \'鍚~姹℃按\'',
       minZoom: 10,
       index: 1
@@ -105,6 +110,7 @@
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
+      icon: 'sewers/鐢熸椿姹℃按.png',
       filter: 'mediumtype = \'鐢熸椿姹℃按\'',
       minZoom: 13,
       index: 1
@@ -117,6 +123,7 @@
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
+      icon: 'sewers/鍑�鍖栨按.png',
       filter: 'mediumtype = \'鍑�鍖栨按\'',
       minZoom: 13,
       index: 1
@@ -128,6 +135,7 @@
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
+      icon: 'sewers/寰幆姘�.png',
       filter: 'mediumtype = \'寰幆姘碶'',
       checked: false,
       minZoom: 13,
@@ -141,6 +149,7 @@
       type: SERVICE_TYPE.WMS,
       layerGroup: 'sewer:pipeline_group',
       typeName: 'sewer:pipeline',
+      icon: 'sewers/鐢熶骇姹℃按.png',
       filter: 'mediumtype = \'鐢熶骇姹℃按\'',
       minZoom: 13,
       color: '#a8a800',
diff --git a/src/utils/utils.js b/src/utils/utils.js
index 2328fd0..304c202 100644
--- a/src/utils/utils.js
+++ b/src/utils/utils.js
@@ -27,15 +27,15 @@
  * 鑴夊啿鏁堟灉
  */
 export function pulseEffect (xy) {
-  let times = 5
-  const colors = ['#98FB98', '#ff0000']
+  let times = 50
+  const colors = ['#00f100', '#ff0000']
   // 鎻掍欢 鏁堟灉瀹炵幇
   var pulsingIcon = window.L.icon.pulse({
-    iconSize: [20, 20],
+    iconSize: [30, 30],
     color: colors[0],
     fillColor: ''
   })
-  var picGroupMarker = window.L.marker(xy, { icon: pulsingIcon }).addTo(window.map)
+  var picGroupMarker = window.L.marker(xy, { icon: pulsingIcon }).addTo(window.mapManager.hightlightLayer)
   // 瀹氭椂
   var timeInterval = setInterval(() => {
     if (times > 0) {
@@ -47,6 +47,31 @@
   }, 1000)
 }
 
+export function reversePolyLine (feature) {
+  const coordinates = feature.geometry.coordinates
+  var latlng = []
+  for (var j = 0; j < coordinates.length; j++) {
+    const coordinate = coordinates[j]
+    latlng.push(coordinate.reverse())
+  }
+  return latlng
+}
+
+export function reverseMultiLine (feature) {
+  const coordinates = feature.geometry.coordinates
+  var latlng = []
+  for (var j = 0; j < coordinates.length; j++) {
+    const coordinate = coordinates[j]
+    var xy = []
+    for (var k = 0; k < coordinate.length; k++) {
+      const coor = coordinate[k]
+      xy.push(coor.reverse())
+    }
+    latlng.push(xy)
+  }
+  return latlng
+}
+
 /**
  * 璁剧疆寮圭獥骞崇Щ浣嶇疆
  * @param pos
diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue
index ad0d425..e568cfc 100644
--- a/src/views/MapTemplate.vue
+++ b/src/views/MapTemplate.vue
@@ -38,9 +38,9 @@
 // // 鍏叡灞曠ず鏁版嵁
 // import PublicBounced from '@components/BaseNav/PublicBounced/PublicBounced'
 import LayerFactory from '@components/LayerController/service/LayerFactory'
-import EventHandler from '../components/LayerController/event/EventHandler'
 // import ReportPopup from '../components/panel/topicSearch/SewersSelect/EnterpriseEmergency/ReportPopup'
 import Emergency from '@components/emergency/index'
+import MapManager from '../components/helpers/MapManager'
 
 export default {
   name: 'MapTemplate',
@@ -102,10 +102,6 @@
 
       // this.AddGasHelper()
       // this.ChangeWaterState()
-
-      var eventHandler = new EventHandler()
-      window.eventHandler = eventHandler
-
       var layerFactory = new LayerFactory({
         L: window.L,
         map: this.map
@@ -113,6 +109,8 @@
       layerFactory.init(this.$store.state.map.serviceLayers.LayerSewersLine)
       layerFactory.initEvent(this.$store.state.map.serviceLayers.LayerSewersLine)
       window.layerFactory = layerFactory
+      window.mapManager = new MapManager()
+      window.mapManager.mapClickListener()
       this.saveMapStatus()
       // this.setMapObj(this.mapObj)
       // this.setBasemapHelper(this.basemapHelper)
diff --git a/src/views/popup/Popup.vue b/src/views/popup/Popup.vue
index a3c7836..98ba35b 100644
--- a/src/views/popup/Popup.vue
+++ b/src/views/popup/Popup.vue
@@ -1,15 +1,15 @@
 <template>
   <div id="popup" class="s-map-popup-panel" style="min-width: 280px;max-width: 280px;padding: 0 10px">
-    <el-tabs value="0" type="card">
+    <el-tabs type="card" :value="0">
       <el-tab-pane
-              :key="item.name"
+              :key="index"
               v-for="(item,index) in datas"
               :label="item.title"
-              :name="index"
+              :name="index.toString()"
       >
-        <el-row v-for="(v,k) in filter(item.content)" :key="k">
-          <el-col :span="12"><B>{{k}}锛�</B></el-col>
-          <el-col :span="12">{{v}}</el-col>
+        <el-row v-for="(item,key)  in item.content" :key="key">
+          <el-col :span="12"><B>{{key}}锛�</B></el-col>
+          <el-col :span="12">{{item}}</el-col>
         </el-row>
       </el-tab-pane>
     </el-tabs>
@@ -18,7 +18,6 @@
 
 <script>
 // import '@/assets/css/map/map-popup.scss'
-import { props } from '../../conf/Constants'
 
 export default {
   name: 'Popup',
@@ -28,8 +27,7 @@
       tabsValue: '',
       tabIndex: 2,
       isShow: false,
-      properties: {},
-      props: props
+      properties: {}
     }
   },
   computed: {
@@ -45,11 +43,6 @@
       // console.log(obj)
       return obj
     },
-    setDatas (layer) {
-      console.log(layer)
-      this.datas = layer
-      this.tabsValue = layer[0].name
-    },
     setShow () {
       // this.style.display='auto'
       this.isShow = true
@@ -61,7 +54,6 @@
   },
   watch: {
     datas (newVal) {
-      console.log(newVal)
       if (newVal != null) {
         this.tabsValue = newVal[0].name
       }

--
Gitblit v1.8.0