From 68b02f600f315550d69289c5980fc2f182ec5439 Mon Sep 17 00:00:00 2001
From: ChenZeping02609 <chenzeping02609@163.com>
Date: 星期三, 12 五月 2021 15:13:38 +0800
Subject: [PATCH] Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop
---
src/components/LayerController/service/WmsLayerService.js | 76 +++++++++---------
src/conf/layers/LayerPipeLines.js | 30 +++++--
src/conf/layers/LayerFsss.js | 8 +-
src/components/LayerController/dataset/WmsLayerList.js | 70 +++++++++++++++++
src/conf/layers/LayerHbss.js | 13 +-
src/components/LayerController/service/LayerFactory.js | 2
src/components/LayerController/service/WmsLayerGroupService.js | 27 +++---
7 files changed, 153 insertions(+), 73 deletions(-)
diff --git a/src/components/LayerController/dataset/WmsLayerList.js b/src/components/LayerController/dataset/WmsLayerList.js
new file mode 100644
index 0000000..af11119
--- /dev/null
+++ b/src/components/LayerController/dataset/WmsLayerList.js
@@ -0,0 +1,70 @@
+
+class WmsLayerList {
+ constructor () {
+ // {鍥惧眰鍚嶇О锛歔{typeName:xxx,filter:yyy}]}
+ this.layers = []
+ }
+
+ addConfig (config) {
+ const typeName = config.typeName
+ const layerGroup = config.layerGroup || typeName
+ const filter = config.filter
+ if (layerGroup) {
+ this.addLayer(layerGroup, typeName, filter)
+ }
+ }
+
+ addLayer (layerGroup, typeName, filter) {
+ const layers = this.layers
+ const layer = layers[layerGroup]
+ if (layer) {
+ layers[layerGroup].push({ typeName: typeName, filter: filter || 'INCLUDE' })
+ } else {
+ layers[layerGroup] = [{ typeName: typeName, filter: filter || 'INCLUDE' }]
+ }
+ }
+
+ remove (typeName, filter) {
+ const layers = this.layers
+ for (const k in layers) {
+ if (k === typeName) {
+ delete this.layers[k]
+ break
+ }
+ for (let i = 0; i < layers[k].length; i++) {
+ const layer = layers[k][i]
+ if (typeName === layer.typeName && filter === layer.filter) {
+ this.layers[k].splice(i, 1)
+ if (this.layers[k].length === 0) {
+ delete this.layers[k]
+ }
+ break
+ }
+ }
+ }
+ }
+
+ getLayers () {
+ const layers = this.layers
+ const _layers = []
+ for (const k in layers) {
+ _layers.push(k)
+ }
+ return _layers.join(',')
+ }
+
+ getFilters () {
+ const layers = this.layers
+ const cqlFilters = []
+ for (const k in layers) {
+ const filters = []
+ for (let i = 0; i < layers[k].length; i++) {
+ filters.push(layers[k][i].filter)
+ }
+ cqlFilters.push(filters.join(' OR '))
+ }
+ return cqlFilters.join(';')
+ }
+}
+
+export default WmsLayerList
diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js
index f781247..0a661d6 100644
--- a/src/components/LayerController/service/LayerFactory.js
+++ b/src/components/LayerController/service/LayerFactory.js
@@ -36,7 +36,7 @@
var childLayer = config.childLayer
var checked = config.checked
/* if (config.groupName) {
- const wmsGroupLayerService = new WmsGroupLayerService(config)
+ const wmsGroupLayerService = new WmsLayerGroupService(config)
wmsGroupLayerService.init()
continue
} */
diff --git a/src/components/LayerController/service/WmsGroupLayerService.js b/src/components/LayerController/service/WmsLayerGroupService.js
similarity index 97%
rename from src/components/LayerController/service/WmsGroupLayerService.js
rename to src/components/LayerController/service/WmsLayerGroupService.js
index 81e0e18..6f948d5 100644
--- a/src/components/LayerController/service/WmsGroupLayerService.js
+++ b/src/components/LayerController/service/WmsLayerGroupService.js
@@ -4,7 +4,7 @@
/**
* wms 鍥惧眰缁勭殑绠$悊
*/
-class WmsGroupLayerService {
+class WmsLayerGroupService {
constructor (config) {
this.config = config
this.L = window.L
@@ -13,8 +13,18 @@
this.map = window.map
this.popupComp = window.popupComp
// {groupName:{url:'.../wms',layers:[]}}
- this.groups = []
this.map.on('click', (e) => this.click(e))
+ }
+
+ load () {
+ for (var k in this.groups) {
+ console.log(k)
+ this.L.tileLayer.wms(PIPELINE_WMS, {
+ format: 'image/png', // 杩斿洖鐨勬暟鎹牸寮�
+ transparent: true,
+ layers: k // todo
+ }).addTo(this.layer).bringToFront()
+ }
}
init () {
@@ -53,17 +63,6 @@
layers: [layerName]
}
}
- }
- }
-
- load () {
- for (var k in this.groups) {
- console.log(k)
- this.L.tileLayer.wms(PIPELINE_WMS, {
- format: 'image/png', // 杩斿洖鐨勬暟鎹牸寮�
- transparent: true,
- layers: k // todo
- }).addTo(this.layer).bringToFront()
}
}
@@ -114,4 +113,4 @@
}
}
-export default WmsGroupLayerService
+export default WmsLayerGroupService
diff --git a/src/components/LayerController/service/WmsLayerService.js b/src/components/LayerController/service/WmsLayerService.js
index fe4ba3c..999783e 100644
--- a/src/components/LayerController/service/WmsLayerService.js
+++ b/src/components/LayerController/service/WmsLayerService.js
@@ -1,7 +1,7 @@
import AjaxUtils from '../../../utils/AjaxUtils'
import { PIPELINE_WMS } from '../../../conf/Constants'
import Popup from '@views/popup/Popup'
-import List from '../../../utils/List'
+import WmsLayerList from '../dataset/WmsLayerList'
/**
* todo 寰楄�冭檻涓�涓浘灞傞厤缃簡澶氫釜 wmsLayers鐨勬儏鍐�
@@ -28,57 +28,59 @@
// 瀛樻斁getfeatureinfo鐨勫浘灞傜粍
this.featureGroup = this.L.featureGroup({}).addTo(this.map)
- this.layers = new List()
- this.filters = new List()
+ this.wmsLayerList = new WmsLayerList()
for (var i = 0; i < layersConfig.length; i++) {
const config = layersConfig[i]
- const typeName = config.typeName
- if (typeName) {
- this.layers.add(config.index, typeName)
- if (config.filter) {
- this.filters.addEnd(config.filter)
- }
- }
+ this.wmsLayerList.addConfig(config)
}
+ this.load()
}
init () {
- if (this.layers) {
- this.load(this.layers)
- this.clickListener()
- }
+ this.clickListener()
}
add (config) {
- const typeName = config.typeName
- if (typeName) {
- if (!this.layers.contains(typeName)) {
- this.layers.add(config.index, typeName)
- if (config.filter) {
- this.filters.addEnd(config.filter)
- }
- this.wmsLayer.setParams({ cql_filter: this.filters.join(' and ') })
- }
+ this.wmsLayerList.addConfig(config)
+ const layers = this.wmsLayerList.getLayers()
+ const filter = this.wmsLayerList.getFilters()
+ const params = {}
+ if (filter) {
+ params.cql_filter = filter
}
+ if (layers) {
+ params.layers = layers
+ }
+ this.wmsLayer.setParams(params)
}
remove (config) {
console.log(config)
- const typeName = config.typeName
- this.layers.remove(typeName)
- if (config.filter) {
- this.filters.remove(config.filter)
+ this.wmsLayerList.remove(config.typeName, config.filter)
+ const layers = this.wmsLayerList.getLayers()
+ const filter = this.wmsLayerList.getFilters()
+ const params = { layers: layers }
+ if (filter) {
+ params.cql_filter = filter
}
- this.wmsLayer.setParams({ cql_filter: this.filters.join(' and ') })
+ this.wmsLayer.setParams(params)
}
- load (layers) {
- this.wmsLayer = this.L.tileLayer.wms(PIPELINE_WMS, {
+ load () {
+ const layers = this.wmsLayerList.getLayers()
+ const filter = this.wmsLayerList.getFilters()
+ const params = {
format: 'image/png', // 杩斿洖鐨勬暟鎹牸寮�
transparent: true,
- layers: 'sewer:pipesegment', // this.layers.join(','),
- cql_filter: this.filters.join(' and ')
- }).addTo(this.map)
+ BBOX: this.map.getBounds().toBBoxString()
+ }
+ if (layers) {
+ params.layers = layers
+ }
+ if (filter.length > 0) {
+ params.cql_filter = filter
+ }
+ this.wmsLayer = this.L.tileLayer.wms(PIPELINE_WMS, params).addTo(this.map)
}
clickListener () {
@@ -88,11 +90,11 @@
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()
-
- if (this.layers.length() > 0) {
+ const layers = this.wmsLayerList.getLayers()
+ if (layers.length > 0) {
const params = Object.assign({
- LAYERS: this.layers.join(','),
- QUERY_LAYERS: this.layers.join(','),
+ LAYERS: layers,
+ QUERY_LAYERS: layers,
WIDTH: size.x,
HEIGHT: size.y,
X: Math.round(point.x),
diff --git a/src/conf/layers/LayerFsss.js b/src/conf/layers/LayerFsss.js
index 6cc183a..b0e4350 100644
--- a/src/conf/layers/LayerFsss.js
+++ b/src/conf/layers/LayerFsss.js
@@ -1,8 +1,8 @@
/**
* 鍖哄煙
*/
-import { PIPELINE_WFS, SERVICE_TYPE } from '../Constants'
-const WFS_URL = PIPELINE_WFS
+import { SERVICE_TYPE } from '../Constants'
+
export const LayerFsss = {
code: 'sewersFsss',
name: '闄勫睘璁炬柦',
@@ -46,7 +46,7 @@
sname: 'PipeRack',
minZoom: 16,
type: SERVICE_TYPE.WMS,
- typeName: WFS_URL + '?TYPENAME=绠℃灦',
+ typeName: 'sewer:piperack',
checked: false
},
{
@@ -55,7 +55,7 @@
sname: 'PipeGallery',
minZoom: 16,
type: SERVICE_TYPE.WMS,
- typeName: '?TYPENAME=绠″粖',
+ typeName: 'sewer:pipegallery',
checked: false
},
{
diff --git a/src/conf/layers/LayerHbss.js b/src/conf/layers/LayerHbss.js
index dafb46d..f93be09 100644
--- a/src/conf/layers/LayerHbss.js
+++ b/src/conf/layers/LayerHbss.js
@@ -1,8 +1,7 @@
/**
* 鍖哄煙
*/
-import { PIPELINE_WFS, SERVICE_TYPE } from '../Constants'
-const WFS_URL = PIPELINE_WFS
+import { SERVICE_TYPE } from '../Constants'
export const LayerHbss = {
code: 'sewersHbss',
name: '鐜繚璁炬柦',
@@ -35,7 +34,7 @@
sname: '闃茬伀鍫�',
minZoom: 16,
type: SERVICE_TYPE.WMS,
- wfs: WFS_URL + '?TYPENAME=闃茬伀鍫�',
+ typeName: 'sewer:firedike',
checked: false
},
{
@@ -43,7 +42,7 @@
name: '闆嗘按姹�',
sname: '闆嗘按姹�',
minZoom: 16,
- wfs: WFS_URL + '?TYPENAME=闆嗘按姹�',
+ typeName: 'sewer:collectingbasin',
checked: false,
type: SERVICE_TYPE.WMS,
icon: 'sewers/闆嗘按姹�.png'
@@ -53,7 +52,7 @@
name: '鎴祦闂�',
sname: '鎴祦闂�',
type: SERVICE_TYPE.WMS,
- wfs: WFS_URL + '?TYPENAME=鎴祦闂�',
+ typeName: 'sewer:collectingbasin',
checked: false
},
{
@@ -62,7 +61,7 @@
sname: '婧㈡祦鍫�',
minZoom: 16,
type: SERVICE_TYPE.WMS,
- wfs: WFS_URL + '?TYPENAME=婧㈡祦鍫�',
+ typeName: 'ewer:overflowweir',
checked: false
},
{
@@ -72,7 +71,7 @@
minZoom: 16,
checked: false,
type: SERVICE_TYPE.WMS,
- wfs: WFS_URL + '?TYPENAME=闅旀补姹�',
+ typeName: 'ewer:oilseparator',
icon: 'sewers/闅旀补姹�.png'
}
]
diff --git a/src/conf/layers/LayerPipeLines.js b/src/conf/layers/LayerPipeLines.js
index d3de90e..cf545c9 100644
--- a/src/conf/layers/LayerPipeLines.js
+++ b/src/conf/layers/LayerPipeLines.js
@@ -19,7 +19,8 @@
sname: '绠$綉',
checked: false,
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
icon: 'sewers/闆ㄦ按绾�.png',
color: '#0070ff',
minZoom: 13,
@@ -36,7 +37,8 @@
sname: '浜嬫晠姘�',
checked: false,
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
minZoom: 13,
filter: 'mediumtype = \'浜嬫晠姘碶'',
index: 1
@@ -47,7 +49,8 @@
sname: '鍚补姹℃按',
checked: false,
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
minZoom: 13,
color: '#ffaa00',
filter: 'mediumtype = \'鍚补姹℃按\'',
@@ -63,7 +66,8 @@
sname: '鍚洂姹℃按',
checked: false,
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
minZoom: 13,
filter: 'mediumtype = \'鍚洂姹℃按\'',
index: 1
@@ -74,7 +78,8 @@
sname: '鍚⒈姹℃按',
checked: false,
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
filter: 'mediumtype = \'鍚⒈姹℃按\'',
minZoom: 10,
index: 1
@@ -85,7 +90,8 @@
sname: '鍚~姹℃按',
checked: false,
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
filter: 'mediumtype = \'鍚~姹℃按\'',
minZoom: 10,
index: 1
@@ -96,7 +102,8 @@
sname: '鐢熸椿姹℃按',
checked: false,
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
filter: 'mediumtype = \'鐢熸椿姹℃按\'',
minZoom: 13,
index: 1
@@ -107,7 +114,8 @@
sname: '鍑�鍖栨按',
checked: false,
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
filter: 'mediumtype = \'鍑�鍖栨按\'',
minZoom: 13,
index: 1
@@ -117,7 +125,8 @@
name: '寰幆姘�',
sname: '寰幆姘�',
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
filter: 'mediumtype = \'寰幆姘碶'',
checked: false,
minZoom: 13,
@@ -129,7 +138,8 @@
sname: '鐢熶骇姹℃按',
checked: false,
type: SERVICE_TYPE.WMS,
- typeName: 'sewer:pipeline,sewer:pipenetwork,sewer:pipesegment',
+ layerGroup: 'sewer:pipeline_group',
+ typeName: 'sewer:pipeline',
filter: 'mediumtype = \'鐢熶骇姹℃按\'',
minZoom: 13,
color: '#a8a800',
--
Gitblit v1.8.0