From 239a629af8c75b80d5c0e50fcd27b932655b7b04 Mon Sep 17 00:00:00 2001 From: 徐旺旺 <11530253@qq.com> Date: 星期二, 23 二月 2021 18:09:46 +0800 Subject: [PATCH] 修改图层控制 --- src/conf/Constants.js | 5 + src/components/LayerController/modules/LcServiceLayerFilter.vue | 27 +--- src/conf/Styles.js | 24 ++++ src/conf/LayerSewers.js | 138 +++++++++++++++----------- src/components/helpers/ServiceLayerHelper.js | 84 ++++++++++++---- 5 files changed, 181 insertions(+), 97 deletions(-) diff --git a/src/components/LayerController/modules/LcServiceLayerFilter.vue b/src/components/LayerController/modules/LcServiceLayerFilter.vue index cb36875..d9bad44 100644 --- a/src/components/LayerController/modules/LcServiceLayerFilter.vue +++ b/src/components/LayerController/modules/LcServiceLayerFilter.vue @@ -7,8 +7,8 @@ </div> <div class="content"> <div v-for="filter in item.filters" :key="filter.code"> - <input type="checkbox" :value="filter.code" :checked="filter.checked"><label - :title="filter.name">{{filter.sname}}</label> + <input type="checkbox" :value="filter.code" :checked="filter.checked" @change="swSubFilter(filter)"><label + :title="filter.name">{{filter.name}}</label> </div> </div> </div> @@ -18,7 +18,6 @@ <script> import { mapMutations } from 'vuex' -import WmsHelper from '../../helpers/WmsHelper' export default { name: 'LcServiceLayerFilter', @@ -56,21 +55,13 @@ ...mapMutations([]), swAllSubFilter (item) { item.checked = !item.checked - for (let i = 0, len = item.filters.length; i < len; ++i) { - item.filters[i].checked = item.checked - } - var mapConfig = this.mapConfig - var wmsHelper = new WmsHelper() - wmsHelper.initMapConfig(mapConfig) - var wmsLayersMap = wmsHelper.getWmsLayersMap() - for (var k in wmsLayersMap) { - var layers = wmsLayersMap[k] - var tileLayer = this.serviceLayerHelper.getTileLayer(k) - if (tileLayer) { - tileLayer.setParams({ layers: layers.join(',') }, true) - tileLayer.setUrl(tileLayer.config.url, false) - } - } + console.log(item) + // window.serviceLayerHelper.loadLayers() + }, + swSubFilter (item) { + item.checked = !item.checked + console.log(item) + // window.serviceLayerHelper.loadLayers() } } } diff --git a/src/components/helpers/ServiceLayerHelper.js b/src/components/helpers/ServiceLayerHelper.js index 7bef7bd..cbfdedd 100644 --- a/src/components/helpers/ServiceLayerHelper.js +++ b/src/components/helpers/ServiceLayerHelper.js @@ -3,6 +3,7 @@ * 鍒涘缓鍥惧眰鐩稿叧鐨勭被 */ import AjaxUtils from '@/utils/AjaxUtils' +import { GEOM_TYPE } from '../../conf/Constants' class ServiceLayerHelper { constructor (options) { @@ -27,7 +28,7 @@ */ initServiceLayers (layerConfig) { this.layerConfig = layerConfig - this._loadLayers(layerConfig.mapConfig.Layers.LayerSewersLine) + this.loadLayers(layerConfig.mapConfig.Layers.LayerSewersLine) } /** @@ -35,7 +36,7 @@ * @param {*} mapConfig * @param {*} isAddToMap */ - _loadLayers (layerConfig, isAddToMap = true) { + loadLayers (layerConfig, isAddToMap = true) { console.debug('ServiceLayerHelper鍔犺浇鍙傛暟锛�', layerConfig) for (let i = 0, len = layerConfig.length; i < len; ++i) { const opt = layerConfig[i] @@ -64,35 +65,78 @@ var layer = layers[i] var matchValue = layer[matches[1]] var checked = layer.checked + var geomtype = layer.geomtype if (!checked) { continue } var newUrl = url.replace(this.regex, matchValue) var that = this AjaxUtils.GetDataAsynByUrl(newUrl, {}, function (res) { - // let geojsondata = L.geoJSON(test.features,{ - that.L.geoJSON(res.features, { - style: function (feature) { - return { - fill: true, - weight: 2, - fillColor: '#06cccc', - color: '#06cccc', - fillOpacity: 0.2, - opacity: 0.8, - dashArray: '10,4', - dashSpeed: -10 - } - }, - minZoom: 10 - }).bindPopup(function (layer) { - // return layer.feature.properties.linenumber - }).addTo(that.map) + switch (geomtype) { + case GEOM_TYPE.POINT : + that.loadPointGeojson(res) + break + case GEOM_TYPE.LINE : + that.loadLineGeojson(res) + break + case GEOM_TYPE.POLYGON : + break + default: + that.loadLineGeojson(res) + break + } }) } } /** + * 鍔犺浇鐐规暟鎹� + * @param res + */ + loadPointGeojson (res) { + this.L.geoJSON(res.features, { + pointToLayer: function (geoJsonPoint, latlng) { + return this.L.canvasMarker(latlng, + { + radius: 20, + prevLatlng: this.L.latLng(51.503, -0.09), // previous point + img: { + url: './images/beng.png', + size: [20, 20], + rotate: 90 + } + }) + } + }).bindPopup(function (layer) { + // return layer.feature.properties.linenumber + }).addTo(this.map) + } + + /** + * 鍔犺浇绾挎暟鎹� + * @param res + */ + loadLineGeojson (res) { + this.L.geoJSON(res.features, { + style: function (feature) { + return { + fill: true, + weight: 2, + fillColor: '#06cccc', + color: '#06cccc', + fillOpacity: 0.2, + opacity: 0.8, + dashArray: '10,4', + dashSpeed: -10 + } + }, + minZoom: 10 + }).bindPopup(function (layer) { + // return layer.feature.properties.linenumber + }).addTo(this.map) + } + + /** * 寰�鍦板浘涓姞鍏ヤ竴涓猈MTS鏈嶅姟 * @param {}} options * @param {*} isAddToMap diff --git a/src/conf/Constants.js b/src/conf/Constants.js new file mode 100644 index 0000000..0c173b0 --- /dev/null +++ b/src/conf/Constants.js @@ -0,0 +1,5 @@ +export const GEOM_TYPE = { + POINT: 'point', + LINE: 'line', + POLYGON: 'polygon' +} diff --git a/src/conf/LayerSewers.js b/src/conf/LayerSewers.js index 3416c8f..01626a2 100644 --- a/src/conf/LayerSewers.js +++ b/src/conf/LayerSewers.js @@ -1,31 +1,13 @@ -import * as L from 'leaflet' - -const APP_GIS_HOST_2 = 'http://xearth.cn:6230' -const myRenderer = L.canvas()// 闇�瑕佷娇鐢ㄧ敾甯冩覆鏌撶殑浣跨敤 renderer: myRenderer 浣滀负鍙傛暟 +import { GEOM_TYPE } from './Constants' +// const APP_GIS_HOST_2 = 'http://xearth.cn:6230' +const APP_GIS_HOST_2 = 'http://localhost:3000' export const LayerSewersLine = { code: 'pipeline', name: '绠$綉鏁版嵁', - icon_actived: '', - icon_deactived: '', type: 'geojson', // url: APP_GIS_HOST_PIPELINE + '/server/ogcserver/PipeLineTest/wms?version=1.1.1', url: APP_GIS_HOST_2 + '/layer/findLayer?layerName={sname}', - inLegend: true, checked: true, - option: { - styles: { - fill: true, - weight: 2, - fillColor: '#06cccc', - color: '#06cccc', - fillOpacity: 0.2, - opacity: 0.8 - // dashArray:'10,4', - // dashSpeed:-10, - }, - renderer: myRenderer - - }, layers: [ { code: 'rainline', @@ -33,6 +15,7 @@ sname: 'pipeline', // 琛ㄥ悕 checked: true, // 榛樿閫変腑鐘舵�� filter: {}, + zoom: 10, // 鍦ㄦ寚瀹氱骇鍒樉绀� childLayer: 'fsss,hbss' // 鍏宠仈PointLayers }, { @@ -114,55 +97,63 @@ { code: 'fsss', name: '闄勫睘璁炬柦', - checked: true, // 榛樿閫変腑鐘舵�� + checked: false, // 榛樿閫変腑鐘舵�� filters: [ { code: 'fourlink', name: '鍥涢��', sname: 'FourLink', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'tee', name: '涓夐��', sname: 'Tee', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'piperack', name: '绠℃灦(澧�)', sname: 'PipeRack', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'pipegallery', name: '绠″粖(甯�)', sname: 'PipeGallery', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'pipesegment', name: '娴佸悜', sname: 'ywslx', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'pipeline', name: '绠$綉', sname: 'pipeline', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'valve', name: '闃�闂�', sname: 'valve', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'elbow', name: '寮ご', sname: 'Elbow', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT } ] }, @@ -175,43 +166,50 @@ code: 'manhole', name: '绐ㄤ簳', sname: '绐ㄤ簳', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'firedike', name: '闃茬伀鍫�', sname: '闃茬伀鍫�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'raingate', name: '闆ㄧ瀛�', sname: '闆ㄧ瀛�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'overflowweir', name: '婧㈡祦鍫�', sname: '婧㈡祦鍫�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'chokevalve', name: '鎴祦闂�', sname: '鎴祦闂�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'collectingbasin', name: '闆嗘按姹�(缃�)', sname: '闆嗘按姹�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'oilseparator', name: '闅旀补姹�', sname: '闅旀补姹�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT } ] }, @@ -224,7 +222,8 @@ code: 'dischargeport', name: '鎺掓斁鍙�', sname: '鎺掓斁鍙�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT } ] }, @@ -237,127 +236,148 @@ code: 'thirdpartypipe', name: '绗笁鏂圭閬�', sname: '绗笁鏂圭閬�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'firefightingunit', name: '娑堥槻鍗曚綅', sname: '娑堥槻鍗曚綅', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'emergencyesources', name: '搴旀�ョ墿璧�', sname: '搴旀�ョ墿璧�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'emergencyres', name: '绀句細涓撲笟搴旀�ユ晳鎻撮槦浼�', sname: '涓撲笟搴旀�ユ晳鎻�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'maintenanceteam', name: '缁存姠淇槦浼�', sname: '缁存姠淇槦浼�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'hospital', name: '鍖婚櫌', sname: '鍖婚櫌', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'pointpreservationzone', name: '鑷劧淇濇姢鍖�', sname: '鑷劧淇濇姢鍖�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'pointhydrology', name: '姘翠綋', sname: '姘翠綋', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'sensitivetarget', name: '鏁忔劅鐩爣', sname: '鏁忔劅鐩爣', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'envmonunit', name: '鐜鐩戞祴鍗曚綅', sname: '鐜鐩戞祴鍗曚綅', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'pointcontaminants', name: '鐩戞祴鐐规薄鏌撶墿鎸囨爣淇℃伅', sname: '姹℃煋鐗╂寚鏍�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'dischargeportaround', name: '鎺掓斁鍙e懆杈圭幆澧冩晱鎰熶俊鎭�', sname: '鎺掓斁鍙e懆杈圭幆澧�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'pump', name: '娉�', sname: '娉�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'liquidlevelmeter', name: '娑蹭綅璁�', sname: '娑蹭綅璁�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'flowmeter', name: '娴侀噺璁�', sname: '娴侀噺璁�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'video', name: '瑙嗛鐩戞帶閰嶇疆', sname: '瑙嗛鐩戞帶', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'onlinemonitoring', name: '鍦ㄧ嚎鐩戞祴璁惧閰嶇疆', sname: '鍦ㄧ嚎鐩戞祴', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'combustiblegas', name: '鍙噧姘斾綋鎶ヨ璁惧閰嶇疆', sname: '鍙噧姘斾綋鎶ヨ', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'hydrogensulfide', name: 'H2S娴撳害鎶ヨ璁惧閰嶇疆', sname: 'H2S娴撳害鎶ヨ', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'controlpoint', name: '绠$嚎鐐�', sname: '绠$嚎鐐�', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT }, { code: 'pipesegment', name: '绠℃', sname: '绠℃', - checked: false + checked: false, + geomtype: GEOM_TYPE.POINT } ] } diff --git a/src/conf/Styles.js b/src/conf/Styles.js new file mode 100644 index 0000000..42416e5 --- /dev/null +++ b/src/conf/Styles.js @@ -0,0 +1,24 @@ +export const LineStyles = { + pipeline: { + fill: true, + weight: 2, + fillColor: '#06cccc', + color: '#06cccc', + fillOpacity: 0.2, + opacity: 0.8, + dashArray: '10,4', + dashSpeed: -10 + } +} +export const PointStyles = { + pipeline: { + fill: true, + weight: 2, + fillColor: '#06cccc', + color: '#06cccc', + fillOpacity: 0.2, + opacity: 0.8, + dashArray: '10,4', + dashSpeed: -10 + } +} -- Gitblit v1.8.0