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