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