From d1a750f93f111a6c1ef01a6ce7531d6738bb5b30 Mon Sep 17 00:00:00 2001
From: 徐旺旺 <11530253@qq.com>
Date: 星期二, 02 三月 2021 13:58:46 +0800
Subject: [PATCH] 修改图层控制

---
 /dev/null                                                 |   78 --------------------------
 src/components/helpers/WfsHelper.js                       |   63 +++++++++++++++++++++
 src/components/LayerController/modules/LcServiceLayer.vue |   17 +++--
 3 files changed, 74 insertions(+), 84 deletions(-)

diff --git a/src/components/LayerController/modules/LcServiceLayer.vue b/src/components/LayerController/modules/LcServiceLayer.vue
index 9833b42..64b2361 100644
--- a/src/components/LayerController/modules/LcServiceLayer.vue
+++ b/src/components/LayerController/modules/LcServiceLayer.vue
@@ -4,7 +4,8 @@
             <div v-for="item in serviceLayers" :key="item.code" class="layerbox">
                 <div><input type="checkbox" :name="'wmsLayer_'+item.code" :checked="item.checked" :value="item.code"
                             @change="swAllLayers(item)"/>{{ item.name }} <span @click="swFilter(item)"
-                                                                               class="btn-filter">杩囨护</span>
+                                                                               class="btn-filter">杩囨护</span><span @click="loadWfs()"
+                                                                                                                 class="btn-filter">娴嬭瘯</span>
                 </div>
                 <div class="layerbox-item">
                     <div class="basemap-layer-item" v-for="itm in item.layers" :key="itm.code"><input type="checkbox"
@@ -22,9 +23,9 @@
 </template>
 
 <script>
-import WmsHelper from '../../helpers/WmsHelper'
-import AjaxUtils from '@/utils/AjaxUtils'
+import WfsHelper from '../../helpers/WfsHelper'
 import LcServiceLayerFilter from '@components/LayerController/modules/LcServiceLayerFilter'
+import AjaxUtils from '../../../utils/AjaxUtils'
 
 export default {
   name: 'LcServiceLayer',
@@ -53,8 +54,12 @@
       this.updateWms()
     },
     loadWfs () {
-      AjaxUtils.GetDataAsynByUrl('http://xearth.cn:6289/server/ogcserver/PipeLineTest/wfs?version=1.0.0&TYPENAME=pipeline&REQUEST=getfeature&OUTPUTFORMAT=json&maxFeatures=20000', {}, (res) => {
-        window.L.geoJSON(res).addTo(window.map)
+      var wfsHelper = new WfsHelper()
+      wfsHelper.addTypeName('绠$嚎鐐�')
+      wfsHelper.appendEquals('pipename', '鐮旂┒闄�01璺痀S000001')
+
+      AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {}, (res) => {
+        console.log(res)
       })
     },
     swWmsLayer (url, itm) {
@@ -74,7 +79,7 @@
     },
     updateWms () {
       var mapConfig = this.mapConfig
-      var wmsHelper = new WmsHelper()
+      var wmsHelper = new WfsHelper()
       wmsHelper.initMapConfig(mapConfig)
       var wmsLayersMap = wmsHelper.getWmsLayersMap()
       for (var k in wmsLayersMap) {
diff --git a/src/components/helpers/WfsHelper.js b/src/components/helpers/WfsHelper.js
new file mode 100644
index 0000000..64a6dd3
--- /dev/null
+++ b/src/components/helpers/WfsHelper.js
@@ -0,0 +1,63 @@
+/**
+ * 鍔犺浇WMS,鎷兼帴FILTER,LAYERS鍙傛暟绛�
+ */
+function WfsHelper () {
+  this.filters = []
+  this.typeNames = []
+  this.url = 'http://xearth.cn:6289/server/ogcserver/PipeLine/wfs'
+  this.params = {
+    REQUEST: 'getfeature',
+    OUTPUTFORMAT: 'JSON',
+    maxFeatures: 20000,
+    version: '1.0.0'
+  }
+
+  this.addTypeName = (typeName) => {
+    this.typeNames.push(typeName)
+  }
+
+  this.appendEquals = (property, literal) => {
+    var filter = '<PropertyIsEqualTo><PropertyName>' + property + '</PropertyName><Literal>' + literal + '</Literal></PropertyIsEqualTo>'
+    this.filters.push(filter)
+  }
+
+  this.getFilterParams = () => {
+    var head = '<Filter xmlns="http://www.opengis.net/ogc">'
+    var end = '</Filter>'
+    var filter = ''
+    if (this.filters.length > 0) {
+      for (var i = 0; i < this.filters.length; i++) {
+        filter += this.filters[i]
+      }
+      return ('FILTER=' + head + filter + end)
+    }
+    return null
+  }
+
+  this.getUrlParams = () => {
+    var params = ''
+    for (var p in this.params) {
+      params += (p + '=' + this.params[p] + '&')
+    }
+    // 鎷兼帴typename鍙傛暟
+    params += 'typename=' + this.typeNames.join(',')
+    // 鎷兼帴filter鍙傛暟
+    var filterParam = this.getFilterParams()
+    if (filterParam) {
+      params += '&' + filterParam
+    }
+    return encodeURI(params)
+  }
+
+  this.getUrl = () => {
+    var url = this.url
+    if (url.indexOf('?') > 0) {
+      url += '&'
+    } else {
+      url += '?'
+    }
+    return url + this.getUrlParams()
+  }
+}
+
+export default WfsHelper
diff --git a/src/components/helpers/WmsHelper.js b/src/components/helpers/WmsHelper.js
deleted file mode 100644
index af18c6c..0000000
--- a/src/components/helpers/WmsHelper.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * 鍔犺浇WMS,鎷兼帴FILTER,LAYERS鍙傛暟绛�
- */
-function WmsHelper () {
-  this.filters = {}
-  this.wmsLayersMap = {}
-
-  this.initMapConfig = (mapConfig) => {
-    var serviceLayers = mapConfig.ServiceLayers
-    for (var i = 0; i < serviceLayers.length; i++) {
-      var service = serviceLayers[i]
-      var checked = service.checked
-      if (!checked) {
-        break
-      }
-      var filtersGroup = service.filtersGroup
-      if (filtersGroup) {
-        this.initLayer(service.code, filtersGroup)
-      }
-    }
-  }
-  this.initLayer = (wms, layersGroup) => {
-    for (var i = 0; i < layersGroup.length; i++) {
-      var filters = layersGroup[i].filters
-      for (var j = 0; j < filters.length; j++) {
-        var layer = filters[j]
-        var checked = layer.checked
-        // var code = layer.code
-        var code = layer.name
-        if (checked) {
-          this.addLayer(wms, code)
-        }
-      }
-    }
-  }
-  this.initFilter = () => {
-    /* for (var i = 0; i < filters.length; i++) {
-             var filter = filters[i]
-             this.addFilter()
-         } */
-  }
-  this.addLayer = (wms, layer) => {
-    var wmsLayer = this.wmsLayersMap[wms]
-    if (wmsLayer) {
-      wmsLayer[wmsLayer.length] = layer
-    } else {
-      this.wmsLayersMap[wms] = [layer]
-    }
-  }
-  this.addFilter = (condition) => {
-    // var filter = this.filters[layer]
-    // if (filter) {
-    this.filters[this.filters.length] = condition
-    // } else {
-    //    this.filters[layer] = [condition]
-    // }
-  }
-  this.getWmsLayersMap = () => {
-    return this.wmsLayersMap
-  }
-  this.getFilterURL = () => {
-    var filterURL = ''
-    var conditions = ''
-    for (var f in this.filters) {
-      var filters = this.filters[f]
-      for (var i = 0; i < filters.length; i++) {
-        conditions += filters[i]
-        if (i < filters.length) {
-          conditions += ','
-        }
-      }
-      filterURL += f + '.(' + conditions + ');'
-    }
-    return filterURL.substr(0, filterURL.length - 1)
-  }
-}
-
-export default WmsHelper

--
Gitblit v1.8.0