From 239a629af8c75b80d5c0e50fcd27b932655b7b04 Mon Sep 17 00:00:00 2001
From: 徐旺旺 <11530253@qq.com>
Date: 星期二, 23 二月 2021 18:09:46 +0800
Subject: [PATCH] 修改图层控制

---
 src/conf/Constants.js                                           |    5 +
 src/components/LayerController/modules/LcServiceLayerFilter.vue |   27 +---
 src/conf/Styles.js                                              |   24 ++++
 src/conf/LayerSewers.js                                         |  138 +++++++++++++++-----------
 src/components/helpers/ServiceLayerHelper.js                    |   84 ++++++++++++----
 5 files changed, 181 insertions(+), 97 deletions(-)

diff --git a/src/components/LayerController/modules/LcServiceLayerFilter.vue b/src/components/LayerController/modules/LcServiceLayerFilter.vue
index cb36875..d9bad44 100644
--- a/src/components/LayerController/modules/LcServiceLayerFilter.vue
+++ b/src/components/LayerController/modules/LcServiceLayerFilter.vue
@@ -7,8 +7,8 @@
                 </div>
                 <div class="content">
                     <div v-for="filter in item.filters" :key="filter.code">
-                        <input type="checkbox" :value="filter.code" :checked="filter.checked"><label
-                            :title="filter.name">{{filter.sname}}</label>
+                        <input type="checkbox" :value="filter.code" :checked="filter.checked" @change="swSubFilter(filter)"><label
+                            :title="filter.name">{{filter.name}}</label>
                     </div>
                 </div>
             </div>
@@ -18,7 +18,6 @@
 
 <script>
 import { mapMutations } from 'vuex'
-import WmsHelper from '../../helpers/WmsHelper'
 
 export default {
   name: 'LcServiceLayerFilter',
@@ -56,21 +55,13 @@
     ...mapMutations([]),
     swAllSubFilter (item) {
       item.checked = !item.checked
-      for (let i = 0, len = item.filters.length; i < len; ++i) {
-        item.filters[i].checked = item.checked
-      }
-      var mapConfig = this.mapConfig
-      var wmsHelper = new WmsHelper()
-      wmsHelper.initMapConfig(mapConfig)
-      var wmsLayersMap = wmsHelper.getWmsLayersMap()
-      for (var k in wmsLayersMap) {
-        var layers = wmsLayersMap[k]
-        var tileLayer = this.serviceLayerHelper.getTileLayer(k)
-        if (tileLayer) {
-          tileLayer.setParams({ layers: layers.join(',') }, true)
-          tileLayer.setUrl(tileLayer.config.url, false)
-        }
-      }
+      console.log(item)
+      // window.serviceLayerHelper.loadLayers()
+    },
+    swSubFilter (item) {
+      item.checked = !item.checked
+      console.log(item)
+      // window.serviceLayerHelper.loadLayers()
     }
   }
 }
diff --git a/src/components/helpers/ServiceLayerHelper.js b/src/components/helpers/ServiceLayerHelper.js
index 7bef7bd..cbfdedd 100644
--- a/src/components/helpers/ServiceLayerHelper.js
+++ b/src/components/helpers/ServiceLayerHelper.js
@@ -3,6 +3,7 @@
  * 鍒涘缓鍥惧眰鐩稿叧鐨勭被
  */
 import AjaxUtils from '@/utils/AjaxUtils'
+import { GEOM_TYPE } from '../../conf/Constants'
 
 class ServiceLayerHelper {
   constructor (options) {
@@ -27,7 +28,7 @@
      */
   initServiceLayers (layerConfig) {
     this.layerConfig = layerConfig
-    this._loadLayers(layerConfig.mapConfig.Layers.LayerSewersLine)
+    this.loadLayers(layerConfig.mapConfig.Layers.LayerSewersLine)
   }
 
   /**
@@ -35,7 +36,7 @@
      * @param {*} mapConfig
      * @param {*} isAddToMap
      */
-  _loadLayers (layerConfig, isAddToMap = true) {
+  loadLayers (layerConfig, isAddToMap = true) {
     console.debug('ServiceLayerHelper鍔犺浇鍙傛暟锛�', layerConfig)
     for (let i = 0, len = layerConfig.length; i < len; ++i) {
       const opt = layerConfig[i]
@@ -64,35 +65,78 @@
       var layer = layers[i]
       var matchValue = layer[matches[1]]
       var checked = layer.checked
+      var geomtype = layer.geomtype
       if (!checked) {
         continue
       }
       var newUrl = url.replace(this.regex, matchValue)
       var that = this
       AjaxUtils.GetDataAsynByUrl(newUrl, {}, function (res) {
-        // let geojsondata =    L.geoJSON(test.features,{
-        that.L.geoJSON(res.features, {
-          style: function (feature) {
-            return {
-              fill: true,
-              weight: 2,
-              fillColor: '#06cccc',
-              color: '#06cccc',
-              fillOpacity: 0.2,
-              opacity: 0.8,
-              dashArray: '10,4',
-              dashSpeed: -10
-            }
-          },
-          minZoom: 10
-        }).bindPopup(function (layer) {
-          // return layer.feature.properties.linenumber
-        }).addTo(that.map)
+        switch (geomtype) {
+          case GEOM_TYPE.POINT :
+            that.loadPointGeojson(res)
+            break
+          case GEOM_TYPE.LINE :
+            that.loadLineGeojson(res)
+            break
+          case GEOM_TYPE.POLYGON :
+            break
+          default:
+            that.loadLineGeojson(res)
+            break
+        }
       })
     }
   }
 
   /**
+   * 鍔犺浇鐐规暟鎹�
+   * @param res
+   */
+  loadPointGeojson (res) {
+    this.L.geoJSON(res.features, {
+      pointToLayer: function (geoJsonPoint, latlng) {
+        return this.L.canvasMarker(latlng,
+          {
+            radius: 20,
+            prevLatlng: this.L.latLng(51.503, -0.09), // previous point
+            img: {
+              url: './images/beng.png',
+              size: [20, 20],
+              rotate: 90
+            }
+          })
+      }
+    }).bindPopup(function (layer) {
+      // return layer.feature.properties.linenumber
+    }).addTo(this.map)
+  }
+
+  /**
+   * 鍔犺浇绾挎暟鎹�
+   * @param res
+   */
+  loadLineGeojson (res) {
+    this.L.geoJSON(res.features, {
+      style: function (feature) {
+        return {
+          fill: true,
+          weight: 2,
+          fillColor: '#06cccc',
+          color: '#06cccc',
+          fillOpacity: 0.2,
+          opacity: 0.8,
+          dashArray: '10,4',
+          dashSpeed: -10
+        }
+      },
+      minZoom: 10
+    }).bindPopup(function (layer) {
+      // return layer.feature.properties.linenumber
+    }).addTo(this.map)
+  }
+
+  /**
      * 寰�鍦板浘涓姞鍏ヤ竴涓猈MTS鏈嶅姟
      * @param {}} options
      * @param {*} isAddToMap
diff --git a/src/conf/Constants.js b/src/conf/Constants.js
new file mode 100644
index 0000000..0c173b0
--- /dev/null
+++ b/src/conf/Constants.js
@@ -0,0 +1,5 @@
+export const GEOM_TYPE = {
+  POINT: 'point',
+  LINE: 'line',
+  POLYGON: 'polygon'
+}
diff --git a/src/conf/LayerSewers.js b/src/conf/LayerSewers.js
index 3416c8f..01626a2 100644
--- a/src/conf/LayerSewers.js
+++ b/src/conf/LayerSewers.js
@@ -1,31 +1,13 @@
-import * as L from 'leaflet'
-
-const APP_GIS_HOST_2 = 'http://xearth.cn:6230'
-const myRenderer = L.canvas()// 闇�瑕佷娇鐢ㄧ敾甯冩覆鏌撶殑浣跨敤 renderer: myRenderer 浣滀负鍙傛暟
+import { GEOM_TYPE } from './Constants'
+// const APP_GIS_HOST_2 = 'http://xearth.cn:6230'
+const APP_GIS_HOST_2 = 'http://localhost:3000'
 export const LayerSewersLine = {
   code: 'pipeline',
   name: '绠$綉鏁版嵁',
-  icon_actived: '',
-  icon_deactived: '',
   type: 'geojson',
   // url: APP_GIS_HOST_PIPELINE + '/server/ogcserver/PipeLineTest/wms?version=1.1.1',
   url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}',
-  inLegend: true,
   checked: true,
-  option: {
-    styles: {
-      fill: true,
-      weight: 2,
-      fillColor: '#06cccc',
-      color: '#06cccc',
-      fillOpacity: 0.2,
-      opacity: 0.8
-      // dashArray:'10,4',
-      // dashSpeed:-10,
-    },
-    renderer: myRenderer
-
-  },
   layers: [
     {
       code: 'rainline',
@@ -33,6 +15,7 @@
       sname: 'pipeline', // 琛ㄥ悕
       checked: true, // 榛樿閫変腑鐘舵��
       filter: {},
+      zoom: 10, // 鍦ㄦ寚瀹氱骇鍒樉绀�
       childLayer: 'fsss,hbss' // 鍏宠仈PointLayers
     },
     {
@@ -114,55 +97,63 @@
   {
     code: 'fsss',
     name: '闄勫睘璁炬柦',
-    checked: true, // 榛樿閫変腑鐘舵��
+    checked: false, // 榛樿閫変腑鐘舵��
     filters: [
       {
         code: 'fourlink',
         name: '鍥涢��',
         sname: 'FourLink',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'tee',
         name: '涓夐��',
         sname: 'Tee',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'piperack',
         name: '绠℃灦(澧�)',
         sname: 'PipeRack',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'pipegallery',
         name: '绠″粖(甯�)',
         sname: 'PipeGallery',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'pipesegment',
         name: '娴佸悜',
         sname: 'ywslx',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'pipeline',
         name: '绠$綉',
         sname: 'pipeline',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'valve',
         name: '闃�闂�',
         sname: 'valve',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'elbow',
         name: '寮ご',
         sname: 'Elbow',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       }
     ]
   },
@@ -175,43 +166,50 @@
         code: 'manhole',
         name: '绐ㄤ簳',
         sname: '绐ㄤ簳',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'firedike',
         name: '闃茬伀鍫�',
         sname: '闃茬伀鍫�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'raingate',
         name: '闆ㄧ瀛�',
         sname: '闆ㄧ瀛�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'overflowweir',
         name: '婧㈡祦鍫�',
         sname: '婧㈡祦鍫�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'chokevalve',
         name: '鎴祦闂�',
         sname: '鎴祦闂�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'collectingbasin',
         name: '闆嗘按姹�(缃�)',
         sname: '闆嗘按姹�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'oilseparator',
         name: '闅旀补姹�',
         sname: '闅旀补姹�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       }
     ]
   },
@@ -224,7 +222,8 @@
         code: 'dischargeport',
         name: '鎺掓斁鍙�',
         sname: '鎺掓斁鍙�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       }
     ]
   },
@@ -237,127 +236,148 @@
         code: 'thirdpartypipe',
         name: '绗笁鏂圭閬�',
         sname: '绗笁鏂圭閬�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'firefightingunit',
         name: '娑堥槻鍗曚綅',
         sname: '娑堥槻鍗曚綅',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'emergencyesources',
         name: '搴旀�ョ墿璧�',
         sname: '搴旀�ョ墿璧�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'emergencyres',
         name: '绀句細涓撲笟搴旀�ユ晳鎻撮槦浼�',
         sname: '涓撲笟搴旀�ユ晳鎻�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'maintenanceteam',
         name: '缁存姠淇槦浼�',
         sname: '缁存姠淇槦浼�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'hospital',
         name: '鍖婚櫌',
         sname: '鍖婚櫌',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'pointpreservationzone',
         name: '鑷劧淇濇姢鍖�',
         sname: '鑷劧淇濇姢鍖�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'pointhydrology',
         name: '姘翠綋',
         sname: '姘翠綋',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'sensitivetarget',
         name: '鏁忔劅鐩爣',
         sname: '鏁忔劅鐩爣',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'envmonunit',
         name: '鐜鐩戞祴鍗曚綅',
         sname: '鐜鐩戞祴鍗曚綅',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'pointcontaminants',
         name: '鐩戞祴鐐规薄鏌撶墿鎸囨爣淇℃伅',
         sname: '姹℃煋鐗╂寚鏍�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'dischargeportaround',
         name: '鎺掓斁鍙e懆杈圭幆澧冩晱鎰熶俊鎭�',
         sname: '鎺掓斁鍙e懆杈圭幆澧�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'pump',
         name: '娉�',
         sname: '娉�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'liquidlevelmeter',
         name: '娑蹭綅璁�',
         sname: '娑蹭綅璁�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'flowmeter',
         name: '娴侀噺璁�',
         sname: '娴侀噺璁�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'video',
         name: '瑙嗛鐩戞帶閰嶇疆',
         sname: '瑙嗛鐩戞帶',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'onlinemonitoring',
         name: '鍦ㄧ嚎鐩戞祴璁惧閰嶇疆',
         sname: '鍦ㄧ嚎鐩戞祴',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'combustiblegas',
         name: '鍙噧姘斾綋鎶ヨ璁惧閰嶇疆',
         sname: '鍙噧姘斾綋鎶ヨ',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'hydrogensulfide',
         name: 'H2S娴撳害鎶ヨ璁惧閰嶇疆',
         sname: 'H2S娴撳害鎶ヨ',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'controlpoint',
         name: '绠$嚎鐐�',
         sname: '绠$嚎鐐�',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       },
       {
         code: 'pipesegment',
         name: '绠℃',
         sname: '绠℃',
-        checked: false
+        checked: false,
+        geomtype: GEOM_TYPE.POINT
       }
     ]
   }
diff --git a/src/conf/Styles.js b/src/conf/Styles.js
new file mode 100644
index 0000000..42416e5
--- /dev/null
+++ b/src/conf/Styles.js
@@ -0,0 +1,24 @@
+export const LineStyles = {
+  pipeline: {
+    fill: true,
+    weight: 2,
+    fillColor: '#06cccc',
+    color: '#06cccc',
+    fillOpacity: 0.2,
+    opacity: 0.8,
+    dashArray: '10,4',
+    dashSpeed: -10
+  }
+}
+export const PointStyles = {
+  pipeline: {
+    fill: true,
+    weight: 2,
+    fillColor: '#06cccc',
+    color: '#06cccc',
+    fillOpacity: 0.2,
+    opacity: 0.8,
+    dashArray: '10,4',
+    dashSpeed: -10
+  }
+}

--
Gitblit v1.8.0