From 2a803059365f15f350a9c088d3a4a5c1ac234fde Mon Sep 17 00:00:00 2001
From: YANGDL <114714267@qq.com>
Date: 星期二, 02 三月 2021 16:19:49 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/helpers/WfsHelper.js |   77 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 77 insertions(+), 0 deletions(-)

diff --git a/src/components/helpers/WfsHelper.js b/src/components/helpers/WfsHelper.js
new file mode 100644
index 0000000..3208ca8
--- /dev/null
+++ b/src/components/helpers/WfsHelper.js
@@ -0,0 +1,77 @@
+/**
+ * 鍔犺浇WMS,鎷兼帴FILTER,LAYERS鍙傛暟绛�
+ */
+import MapConfig from '../../conf/MapConfig'
+function WfsHelper () {
+  this.filters = []
+  this.typeNames = []
+  this.url = MapConfig.BLUEMAP_HOST + '/server/ogcserver/PipeLine/wfs'
+  this.params = {
+    REQUEST: 'getfeature',
+    OUTPUTFORMAT: 'JSON',
+    maxFeatures: 20000,
+    version: '1.0.0'
+  }
+
+  this.addTypeName = (typeName) => {
+    this.typeNames.push(typeName)
+  }
+
+  this.addEquals = (property, literal) => {
+    var filter = '<PropertyIsEqualTo><PropertyName>' + property + '</PropertyName><Literal>' + literal + '</Literal></PropertyIsEqualTo>'
+    this.filters.push(filter)
+  }
+
+  this.addLike = (property, literal) => {
+    var filter = '<PropertyIsLike><PropertyName>' + property + '</PropertyName><Literal>' + literal + '</Literal></PropertyIsLike>'
+    this.filters.push(filter)
+  }
+
+  /**
+   * 寰楀埌filter鍙傛暟鍊�
+   * @returns {string|null}
+   */
+  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]
+      }
+      // 褰撴潯浠舵暟 > 1鏃讹紝闇�瑕佺敤and鏍囩鍖呰9
+      if (this.filters.length > 1) {
+        return ('FILTER=' + head + '<And>' + filter + '</And>' + end)
+      }
+      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

--
Gitblit v1.8.0