From 90bd1d10df12f458eb2e64e8de2b225f45d02153 Mon Sep 17 00:00:00 2001
From: 徐旺旺 <11530253@qq.com>
Date: 星期三, 14 四月 2021 17:34:08 +0800
Subject: [PATCH] 管网、环保设施、附属设施搜索定位
---
src/components/LayerController/logic/PipeLineAnimal.js | 28 ++++++++++++++
src/conf/layers/LayerFsss.js | 2
src/conf/Constants.js | 3 +
src/components/LayerController/service/BusiLayerService.js | 3 +
src/components/LayerController/service/LayerFactory.js | 52 +++++++++++++++++++++-----
src/components/panel/topicSearch/SewersSearch.vue | 16 +++----
src/components/helpers/WfsHelper.js | 10 +++--
7 files changed, 88 insertions(+), 26 deletions(-)
diff --git a/src/components/LayerController/logic/PipeLineAnimal.js b/src/components/LayerController/logic/PipeLineAnimal.js
new file mode 100644
index 0000000..585147b
--- /dev/null
+++ b/src/components/LayerController/logic/PipeLineAnimal.js
@@ -0,0 +1,28 @@
+/**
+ * 绠$嚎鍔ㄧ敾鎺у埗閫昏緫
+ */
+const layerPipeLines = require('../../../conf/layers/LayerPipeLines').LayerPipeLines
+
+module.exports = function () {
+ this.init = (layer, L) => {
+ console.log('sssssss')
+ const layers = layerPipeLines.layers
+ for (var i = 0; i < layers.length; i++) {
+ const config = layers[i]
+ const code = config.code
+ const layer = window.layerFactory.layers[code]
+ layer.setStyle({
+ FILL: true,
+ WEIGHT: 3,
+ FILL_COLOR: '#73b2ff',
+ COLOR: '#73b2ff',
+ FILL_OPACITY: 0.2,
+ OPACITY: 1,
+ DASH_ARRAY: '4,4',
+ DASH_SPPED: -5,
+ ICON_SIZE: [10, 10]
+ })
+ console.log(layer)
+ }
+ }
+}
diff --git a/src/components/LayerController/service/BusiLayerService.js b/src/components/LayerController/service/BusiLayerService.js
index e8f8d03..0a8f958 100644
--- a/src/components/LayerController/service/BusiLayerService.js
+++ b/src/components/LayerController/service/BusiLayerService.js
@@ -13,9 +13,10 @@
init (layer) {
// 寮曞叆 鍏宠仈鐨刯s锛屽湪constant.js涓牴鎹甤onfig閰嶇疆鐨刬d寰楀埌澶勭悊js
const id = this.config.code
+ console.log(id)
const file = logicMapper[id]
if (!file) {
- console.log('鎵句笉鍒伴�昏緫澶勭悊js!!!')
+ console.log('鎵句笉鍒伴�昏緫澶勭悊js!!!' + id)
} else {
var BusiLayer = require('../logic/' + file)
var busiLayer = new BusiLayer()
diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js
index 593b5fd..ae561e5 100644
--- a/src/components/LayerController/service/LayerFactory.js
+++ b/src/components/LayerController/service/LayerFactory.js
@@ -21,7 +21,7 @@
var checked = config.checked
checked && this.load(config)
- checked && this.toggleZoomByConfnig(config)
+ checked && this.toggleZoomByConfig(config)
}
}
}
@@ -43,14 +43,14 @@
var childLayer = config.childLayer
layers && this.toggleZoomByLayer(layers)
childLayer && this.toggleZoomByLayer(childLayer)
- this.toggleZoomByConfnig(config)
+ this.toggleZoomByConfig(config)
}
} else {
- this.toggleZoomByConfnig(layerConfig)
+ this.toggleZoomByConfig(layerConfig)
}
}
- toggleZoomByConfnig (config) {
+ toggleZoomByConfig (config) {
const zoom = this.map.getZoom()
var checked = config.checked
if (checked && config.minZoom) {
@@ -112,25 +112,57 @@
}
- flyByLayerId (layerId, bound) {
- for (var k in this.layers) {
+ flyByLayerId (code, id) {
+ const layer = this.layers[code]
+
+ if (layer.eachLayer) {
+ layer.eachLayer(function (layer) {
+ const layers = layer.getLayers()
+ for (var i = 0; i < layers.length; i++) {
+ const lay = layers[i]
+ const feature = lay.feature
+ lay.closePopup()
+ if (feature.id === id) {
+ lay.openPopup()
+ break
+ }
+ }
+ })
+ }
+ /* for (var k in this.layers) {
var layerGroup = this.layers[k]
+ layerGroup.eachLayer(function (layer) {
+ console.log(layer)
+ console.log(layer.getAttribution())
+ })
var layers = layerGroup.getLayers()
if (layers) {
for (var m = 0; m < layers.length; m++) {
var layer = layers[m]
- console.log(layer.toGeoJSON())
- /* var feature = layer.feature
+ console.log(layer)
+ console.log(layer.getLayerId(val.id))
+ /!* var feature = layer.feature
if (feature.id === layerId) {
this.map.flyToBounds(bound)
return layer
- } */
+ } *!/
}
}
- }
+ } */
return null
}
+ findLayerById (layer, id) {
+ const layers = layer.getLayers
+ if (layers) {
+ this.findLayerById(layer.getLayers(), id)
+ } else {
+ layer.eachLayer(function (layer) {
+ console.log(layer)
+ })
+ }
+ }
+
/**
* todo 杩欓噷鏃犳晥锛岃矊浼兼槸鍥犱负geojson鍔犺浇鍒板湴鍥句篃鏄釜layergroup
*
diff --git a/src/components/helpers/WfsHelper.js b/src/components/helpers/WfsHelper.js
index b9cd594..20093e6 100644
--- a/src/components/helpers/WfsHelper.js
+++ b/src/components/helpers/WfsHelper.js
@@ -1,11 +1,11 @@
/**
* 鍔犺浇WMS,鎷兼帴FILTER,LAYERS鍙傛暟绛�
*/
-import MapConfig from '../../conf/MapConfig'
+import { PIPELINE_WFS } from '../../conf/Constants'
function WfsHelper () {
this.filters = []
this.typeNames = []
- this.url = MapConfig.PIPELINE_WFS
+ this.url = PIPELINE_WFS
this.params = {
REQUEST: 'getfeature',
OUTPUTFORMAT: 'JSON',
@@ -23,8 +23,10 @@
}
this.addLike = (property, literal) => {
- var filter = '<PropertyIsLike><PropertyName>' + property + '</PropertyName><Literal>*' + literal + '*</Literal></PropertyIsLike>'
- this.filters.push(filter)
+ if (property && literal) {
+ var filter = '<PropertyIsLike><PropertyName>' + property + '</PropertyName><Literal>*' + literal + '*</Literal></PropertyIsLike>'
+ this.filters.push(filter)
+ }
}
/**
diff --git a/src/components/panel/topicSearch/SewersSearch.vue b/src/components/panel/topicSearch/SewersSearch.vue
index f32abb2..712dc17 100644
--- a/src/components/panel/topicSearch/SewersSearch.vue
+++ b/src/components/panel/topicSearch/SewersSearch.vue
@@ -17,13 +17,13 @@
</el-select>
</el-form-item>
<el-form-item :label="form.pipelineType+'锛�'" size="mini">
- <el-select style="width: 100%" v-model="form.dataType" :popper-class="'select-down'">
+ <el-select style="width: 100%" v-model="form.dataType" value-key="code" :popper-class="'select-down'">
<!-- @change="handleDataType"-->
<el-option
v-for="item in subItems"
:key="item.code"
:label="item.name"
- :value="item.name">
+ :value="item">
</el-option>
</el-select>
</el-form-item>
@@ -37,13 +37,12 @@
<el-scrollbar style="height:380.44px;">
<div class="environmental-risk-list" v-for="(item,index) in list" :key="index">
<div @click="handleLocation(item)">
- <h3 class="B-TMD-table-list-title-y"
- :class="['B-TMD-table-list-title-y-nam', { 'warning': item.vehicleStatus==='910003' }, { 'offline': item.vehicleStatus==='910001' }]">
+ <h3 class="B-TMD-table-list-title-y">
{{ item.properties.pipename }}</h3>
- <p v-for="itm in labelList" :key="itm.label">
+ <!--<p v-for="itm in labelList" :key="itm.label">
<span>{{ itm.label }}锛�</span>
<span :title="item.properties[itm.key] ">{{ item.properties[itm.key] }}</span>
- </p>
+ </p>-->
</div>
</div>
</el-scrollbar>
@@ -126,7 +125,7 @@
async handleSearch () {
var wfsHelper = new WfsHelper()
// todo 鐜板湪绠$綉杩樻病鍖哄垎寮�绫诲瀷锛屽悗闈㈡敼
- wfsHelper.addTypeName('绠$綉')
+ wfsHelper.addTypeName(this.form.dataType.name)
wfsHelper.addLike('name', this.form.keyword)
// const _this = this
const res = await AjaxUtils.GetDataAsynByUrl(wfsHelper.getUrl(), {})
@@ -136,10 +135,9 @@
}
},
handleLocation (val) {
- console.log(val)
const bound = this.L.geoJSON([val], {}).getBounds()
- // var layer = window.layerFactory.flyByLayerId(val.id, bound)
window.map.flyToBounds(bound)
+ window.layerFactory.flyByLayerId(this.form.dataType.code, val.id)
// layer && layer.openPopup()
}
}
diff --git a/src/conf/Constants.js b/src/conf/Constants.js
index f78ac95..d4c087e 100644
--- a/src/conf/Constants.js
+++ b/src/conf/Constants.js
@@ -10,7 +10,8 @@
wasteGasPfk: 'WasteGas.js',
wasteWaterPfk: 'WasteWater.js',
wasteSolidCcd: 'SolidWaste.js',
- sewersAreaGs: 'Company.js'
+ sewersAreaGs: 'Company.js',
+ pipesegment: 'PipeLineAnimal.js'
}
export const STYLES = {
diff --git a/src/conf/layers/LayerFsss.js b/src/conf/layers/LayerFsss.js
index 01a5615..4fb6a1d 100644
--- a/src/conf/layers/LayerFsss.js
+++ b/src/conf/layers/LayerFsss.js
@@ -54,7 +54,7 @@
code: 'pipesegment',
name: '娴佸悜',
sname: 'ywslx',
- wfs: WFS_URL + '?TYPENAME=娴佸悜',
+ url: 'pipesegment',
checked: false
},
{
--
Gitblit v1.8.0