From 7f6291e80073c0c29f9d24bfdd3ac2602a059e70 Mon Sep 17 00:00:00 2001 From: chenyabin <Chenab123!> Date: 星期二, 18 五月 2021 10:10:40 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/develop' into develop --- src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue | 69 ++- public/assets/images/map/sewers/含油污水.png | 0 src/conf/layers/LayerPipeLines.js | 11 src/components/LayerController/service/AnimalService.js | 13 src/components/layer/src/layer.vue | 6 src/conf/layers/LayerArea.js | 3 src/components/LayerController/logic/Company.js | 43 - src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue | 20 src/components/panel/topicSearch/DischargeSearch.vue | 2 src/views/popup/Popup.vue | 22 public/assets/images/map/sewers/防火堤.png | 0 public/assets/images/map/sewers/含硫污水.png | 0 src/components/LayerController/service/WmsLayerService.js | 157 -------- src/conf/layers/LayerHbss.js | 3 src/conf/Constants.js | 206 +++++++++- public/assets/images/map/sewers/含盐污水.png | 0 public/assets/images/map/sewers/净化水.png | 0 src/components/LayerController/service/WmsLayerGroupService.js | 1 src/utils/utils.js | 33 + public/assets/images/map/sewers/生产污水.png | 0 src/components/LayerController/logic/SourcesPollution.js | 16 src/components/LayerController/logic/WasteGas.js | 7 public/assets/images/map/sewers/含碱污水.png | 0 src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue | 10 src/conf/layers/LayerFsss.js | 3 public/assets/images/map/sewers/管架.png | 0 src/views/MapTemplate.vue | 8 src/components/LayerController/service/LayerFactory.js | 157 -------- public/assets/images/map/sewers/流向.png | 0 src/components/helpers/MapManager.js | 59 +++ public/assets/images/map/sewers/管廊.png | 0 src/components/panel/topicSearch/SolidWasteSearch.vue | 5 public/assets/images/map/sewers/事故水.png | 0 public/assets/images/map/sewers/循环水.png | 0 /dev/null | 26 - src/conf/MapConfig.js | 1 public/assets/images/map/sewers/生活污水.png | 0 public/assets/images/map/sewers/装置区.png | 0 src/components/LayerController/logic/WasteWater.js | 38 - src/components/panel/topicSearch/SewersSearch.vue | 9 public/assets/images/map/sewers/截流闸.png | 0 src/components/LayerController/logic/WasteSolid.js | 7 public/assets/images/map/sewers/公司.png | 0 src/components/helpers/LocateHelper.js | 123 ++++++ public/assets/images/map/sewers/溢流堰.png | 0 src/components/layer/src/layer.js | 4 46 files changed, 557 insertions(+), 505 deletions(-) diff --git "a/public/assets/images/map/sewers/\344\272\213\346\225\205\346\260\264.png" "b/public/assets/images/map/sewers/\344\272\213\346\225\205\346\260\264.png" new file mode 100644 index 0000000..a633444 --- /dev/null +++ "b/public/assets/images/map/sewers/\344\272\213\346\225\205\346\260\264.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\345\205\254\345\217\270.png" "b/public/assets/images/map/sewers/\345\205\254\345\217\270.png" new file mode 100644 index 0000000..0d202f5 --- /dev/null +++ "b/public/assets/images/map/sewers/\345\205\254\345\217\270.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\345\207\200\345\214\226\346\260\264.png" "b/public/assets/images/map/sewers/\345\207\200\345\214\226\346\260\264.png" new file mode 100644 index 0000000..d5359a1 --- /dev/null +++ "b/public/assets/images/map/sewers/\345\207\200\345\214\226\346\260\264.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\345\220\253\346\262\271\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\345\220\253\346\262\271\346\261\241\346\260\264.png" new file mode 100644 index 0000000..38b284c --- /dev/null +++ "b/public/assets/images/map/sewers/\345\220\253\346\262\271\346\261\241\346\260\264.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\345\220\253\347\233\220\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\345\220\253\347\233\220\346\261\241\346\260\264.png" new file mode 100644 index 0000000..5c93042 --- /dev/null +++ "b/public/assets/images/map/sewers/\345\220\253\347\233\220\346\261\241\346\260\264.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\345\220\253\347\241\253\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\345\220\253\347\241\253\346\261\241\346\260\264.png" new file mode 100644 index 0000000..10705fb --- /dev/null +++ "b/public/assets/images/map/sewers/\345\220\253\347\241\253\346\261\241\346\260\264.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\345\220\253\347\242\261\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\345\220\253\347\242\261\346\261\241\346\260\264.png" new file mode 100644 index 0000000..676138b --- /dev/null +++ "b/public/assets/images/map/sewers/\345\220\253\347\242\261\346\261\241\346\260\264.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\345\276\252\347\216\257\346\260\264.png" "b/public/assets/images/map/sewers/\345\276\252\347\216\257\346\260\264.png" new file mode 100644 index 0000000..d3569e2 --- /dev/null +++ "b/public/assets/images/map/sewers/\345\276\252\347\216\257\346\260\264.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\346\210\252\346\265\201\351\227\270.png" "b/public/assets/images/map/sewers/\346\210\252\346\265\201\351\227\270.png" new file mode 100644 index 0000000..6790e49 --- /dev/null +++ "b/public/assets/images/map/sewers/\346\210\252\346\265\201\351\227\270.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\346\265\201\345\220\221.png" "b/public/assets/images/map/sewers/\346\265\201\345\220\221.png" new file mode 100644 index 0000000..b87b23d --- /dev/null +++ "b/public/assets/images/map/sewers/\346\265\201\345\220\221.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\346\272\242\346\265\201\345\240\260.png" "b/public/assets/images/map/sewers/\346\272\242\346\265\201\345\240\260.png" new file mode 100644 index 0000000..81a8b47 --- /dev/null +++ "b/public/assets/images/map/sewers/\346\272\242\346\265\201\345\240\260.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\347\224\237\344\272\247\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\347\224\237\344\272\247\346\261\241\346\260\264.png" new file mode 100644 index 0000000..0897c51 --- /dev/null +++ "b/public/assets/images/map/sewers/\347\224\237\344\272\247\346\261\241\346\260\264.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\347\224\237\346\264\273\346\261\241\346\260\264.png" "b/public/assets/images/map/sewers/\347\224\237\346\264\273\346\261\241\346\260\264.png" new file mode 100644 index 0000000..5165e20 --- /dev/null +++ "b/public/assets/images/map/sewers/\347\224\237\346\264\273\346\261\241\346\260\264.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\347\256\241\345\273\212.png" "b/public/assets/images/map/sewers/\347\256\241\345\273\212.png" new file mode 100644 index 0000000..e07d50f --- /dev/null +++ "b/public/assets/images/map/sewers/\347\256\241\345\273\212.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\347\256\241\346\236\266.png" "b/public/assets/images/map/sewers/\347\256\241\346\236\266.png" new file mode 100644 index 0000000..0ade675 --- /dev/null +++ "b/public/assets/images/map/sewers/\347\256\241\346\236\266.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\350\243\205\347\275\256\345\214\272.png" "b/public/assets/images/map/sewers/\350\243\205\347\275\256\345\214\272.png" new file mode 100644 index 0000000..525d157 --- /dev/null +++ "b/public/assets/images/map/sewers/\350\243\205\347\275\256\345\214\272.png" Binary files differ diff --git "a/public/assets/images/map/sewers/\351\230\262\347\201\253\345\240\244.png" "b/public/assets/images/map/sewers/\351\230\262\347\201\253\345\240\244.png" new file mode 100644 index 0000000..33076a5 --- /dev/null +++ "b/public/assets/images/map/sewers/\351\230\262\347\201\253\345\240\244.png" Binary files differ diff --git a/src/components/LayerController/event/EventHandler.js b/src/components/LayerController/event/EventHandler.js deleted file mode 100644 index 2ab3cba..0000000 --- a/src/components/LayerController/event/EventHandler.js +++ /dev/null @@ -1,26 +0,0 @@ - -class EventHandler { - constructor () { - this.map = window.map - this.mapClickForLayers = {} - - window.map.on('click', (e) => { - console.log(e) - for (var k in this.mapClickForLayers) { - const func = this.mapClickForLayers[k] - console.log(func) - func(e) - } - }) - } - - addLayerEvent (config, callback) { - this.mapClickForLayers[config.code] = callback - } - - removeEvent (config) { - delete this.mapClickForLayers[config.code] - } -} - -export default EventHandler diff --git a/src/components/LayerController/logic/Company.js b/src/components/LayerController/logic/Company.js index 8c4bd07..d6b7ea2 100644 --- a/src/components/LayerController/logic/Company.js +++ b/src/components/LayerController/logic/Company.js @@ -1,6 +1,7 @@ /** - * 鍥哄簾 + * 浼佷笟 */ + // 鍖哄垎涓嶅悓绫诲瀷 浣跨敤涓嶅悓img const companyImg = '/assets/images/map/company_refining.png' const companyOil = '/assets/images/map/company_oil.png' @@ -14,7 +15,6 @@ * @param L leaflet瀵硅薄 */ this.init = async (layer, L) => { - // const SolidWasteIcon = this.SolidWasteIcon() this.animalService = new AnimalService({ L: L, layer: layer @@ -39,23 +39,10 @@ className: 'company-bindTooltip', iconSize: 16 }) - const marker = L.marker([positionX, positionY], { - /* icon: L.icon({ - iconUrl: iconUrl, - iconSize: [30, 30], - iconAnchor: [15, 15] - }), */ icon: myIcon, test: data[i] }) - /* const htmls = '<ul><li>' + data[i].name + '</li></ul>' - marker.bindTooltip(htmls, { - permanent: true, - offset: [0, 5], - direction: 'bottom', - className: 'company-bindTooltip' - }) */ layer.addLayer(marker) } } @@ -63,23 +50,27 @@ * 鐐逛綅榧犳爣绉诲叆寮规 * */ this.bindTooltip = (layer) => { - // console.log(layer) + // console.log(layer) return '<div class="company-bindTooltip-hover"><h3>姹℃煋鐗╀骇鐢熺粺璁�</h3><ul>' + - '<li>鐢熶骇璁炬柦锛�30锛堜釜锛�</li>' + - '<li>娌荤悊璁炬柦锛�30锛堜釜锛�</li>' + - '</ul></div>'// layer.options.test.name + '<li>鐢熶骇璁炬柦锛�30锛堜釜锛�</li>' + + '<li>娌荤悊璁炬柦锛�30锛堜釜锛�</li>' + + '</ul></div>'// layer.options.test.name } /* * 鐐逛綅鐐瑰嚮浜嬩欢 * * */ this.clickListener = (e) => { - // this.animalService.pulseEffect(e.latlng) - const dataValue = { - StoragePlaceId: e.layer.options.test.name - } - debugger - console.log(dataValue) - // return this.PublicBounced.$el + // console.log(e) + window.map.setView(e.latlng, 15) + // if (window.map.getZoom() >= 10) { + // window.map.removeLayer(e.layer) + // e.layer.remove() + // } else if (window.map.getZoom() < 10) { + // window.map.addLayer(e.layer) + // } + // const dataValue = { + // StoragePlaceId: e.layer.options.test.name + // } } } diff --git a/src/components/LayerController/logic/SourcesPollution.js b/src/components/LayerController/logic/SourcesPollution.js index a701f1c..27899ce 100644 --- a/src/components/LayerController/logic/SourcesPollution.js +++ b/src/components/LayerController/logic/SourcesPollution.js @@ -14,9 +14,23 @@ layer: layer }) const result = await mapApi.getSourcesPoll() - console.log(result) + // console.log(result) const resultData = result.Result.DataInfo || [] const polygon = L.polygon(resultData, { color: 'yellow' }) polygon.addTo(layer) } + this.bindTooltip = (layer) => { + return 'layer' + } + this.click = () => { + window.$layer.open({ + content: { + content: 'Popup', // 缁勪欢 + data: { // 浼犻�掔殑鍙傛暟 + datas: 'popupDatas' + } + }, + title: '' + }) + } } diff --git a/src/components/LayerController/logic/WasteGas.js b/src/components/LayerController/logic/WasteGas.js index 17706bc..6c2fe65 100644 --- a/src/components/LayerController/logic/WasteGas.js +++ b/src/components/LayerController/logic/WasteGas.js @@ -3,7 +3,8 @@ */ const AnimalService = require('../service/AnimalService').default // const AjaxUtils = require('../../../utils/AjaxUtils').default - +// 鍏叡鏂规硶 panTo() 寮曠敤 +const { setPanTo } = require('../../../utils/utils') // 鍖哄垎涓嶅悓绫诲瀷 浣跨敤涓嶅悓img // const ImgBlue = '/assets/images/map/exhaust/fq_blue.png' // const ImgGray = '/assets/images/map/exhaust/fq_gray.png' @@ -60,8 +61,9 @@ } this.clickListener = async (e) => { - console.log(e) + // console.log(e) this.animalService.pulseEffect(e.latlng) + setPanTo(e.latlng, 200) const title = e.layer.options.test.Name const res = e.layer.options.test window.$layer.open({ @@ -74,7 +76,6 @@ }, title: '澶╂触鐭冲寲' + title // 鏍囬 }) - this.animalService.setPanTo(e.latlng, 150) } // 涓嶅悓绫诲瀷鍥剧墖鍔犺浇 this.differentTypes = (ContrLevel) => { diff --git a/src/components/LayerController/logic/WasteSolid.js b/src/components/LayerController/logic/WasteSolid.js index 28b0938..1b9cd9c 100644 --- a/src/components/LayerController/logic/WasteSolid.js +++ b/src/components/LayerController/logic/WasteSolid.js @@ -5,7 +5,8 @@ // 鍖哄垎涓嶅悓绫诲瀷 浣跨敤涓嶅悓img const defaultImg = '/assets/images/map/solidwaste/voc.png' const setting = '/assets/images/map/solidwaste/gf_green2.png' - +// 鍏叡鏂规硶 panTo() 寮曠敤 +const { setPanTo } = require('../../../utils/utils') // 璇锋眰鎺ュ彛鏁版嵁 const mapApi = require('../../../api/mapApi').default // 浣跨敤灏佽鏂规硶 @@ -53,6 +54,8 @@ this.clickListener = (e) => { // 鐐瑰嚮marker鐨刾ulse()鍏夋尝 this.animalService.pulseEffect(e.latlng) + /* flyTo()寮瑰嚭妗嗗钩绉讳簨浠� */ + setPanTo(e.latlng, 200) // 寮规鏍囬 const title = e.layer.options.totransferData.Name window.$layer.open({ @@ -65,8 +68,6 @@ }, title: title // 鏍囬 }) - /* flyTo()寮瑰嚭妗嗗钩绉讳簨浠� */ - this.animalService.setPanTo(e.latlng, 300) } // 涓嶅悓绫诲瀷鍥剧墖灏佽 diff --git a/src/components/LayerController/logic/WasteWater.js b/src/components/LayerController/logic/WasteWater.js index 6f67ed6..267fe0a 100644 --- a/src/components/LayerController/logic/WasteWater.js +++ b/src/components/LayerController/logic/WasteWater.js @@ -1,13 +1,14 @@ /** * 搴熸按 */ -// import WasteWater from "../../table/components/WasteWater"; + +// 鍏叡鏂规硶 panTo() 寮曠敤 +const { setPanTo } = require('../../../utils/utils') const AnimalService = require('../service/AnimalService').default const mapApi = require('../../../api/mapApi').default // 寮圭獥鏁版嵁寮曡繘 const WasteWaterIndex = require('@components/BaseNav/WasteWater/WasteWaterIndex').default -// const publicBounced = require('../../BaseNav/PublicBounced/PublicBounced').default const NormalImg = '/assets/images/map/wastewater/fs_bright_green.png' // 姝e父 const OffImg = '/assets/images/map/wastewater/fs_gray.png' // 鍋滆繍 @@ -48,14 +49,13 @@ } } - // 鍒嗗壊绾�------------------------------------------------------------------------------- this.bindTooltip = (layer) => { return '<div class="company-bindTooltip-hover"><h3>澶╂触鐭冲寲</h3></div>' + layer.options.totransferData.Name } this.clickListener = (e) => { - // 鐐瑰嚮marker鐨刾ulse()鍏夋尝 this.animalService.pulseEffect(e.latlng) + setPanTo(e.latlng, 200) // 寮规鏍囬 const title = e.layer.options.totransferData.Name const res = e.layer.options.totransferData @@ -70,36 +70,6 @@ }, title: '澶╂触鐭冲寲' + title // 鏍囬 }) - this.animalService.setPanTo(e.latlng, 150) - } - this.requestWasteWaterData = async (e) => { - // 鍩烘湰淇℃伅 鍜� 璇︾粏淇℃伅 灞曠ず鏁版嵁鎵�闇�鍙傛暟 - // const dataValue = { - // StoragePlaceId: e.layer.options.test.StoragePlaceId - // } - // 寮规鏍囬 - // const title = e.layer.options.totransferData.Name - // console.log(e.layer.options) - // 鍩烘湰淇℃伅 tabs - // const resultBasic = await mapApi.getWasteWater(dataValue) - // 鍥捐〃淇℃伅灞曠ず echarts - // 瀹炴椂鏁版嵁 - // const resultReal = await mapApi.getDataItems(Value) - // 灏忔椂鏁版嵁 鍙� 鏄庣粏琛ㄦ暟鎹� - // const result = await mapApi.getQueryOnlineMonData(dataValue) - // 鏃ユ暟鎹� 鍙� 鏄庣粏琛ㄦ暟鎹� - // const result = await mapApi.getQueryOnlineMonData(dataValue) - // 浜哄伐鏁版嵁 - // const resultEchart = await mapApi.getQueryLabMonData(dataValue) - - // // 缁戝畾寮规瀹炰緥 - // const PublicBounced = window.Vue.extend(publicBounced) - // const instance = new PublicBounced().$mount() - // document.body.appendChild(instance.$el) - // // document.body.removeChild(instance.$el) - // // 閫氳繃鏂规硶 鍚戠粦瀹氬脊妗嗕紶閫掓暟鎹� - // instance.setData(title, resultBasic.Result.DataInfo, resultDetailed.Result.DataInfo, 'gufei') - /* flyTo()寮瑰嚭妗嗗钩绉讳簨浠� */ } // 鏍规嵁杩斿洖鍊肩殑涓嶅悓鏍囪涓嶅悓鍥剧墖 diff --git a/src/components/LayerController/service/AnimalService.js b/src/components/LayerController/service/AnimalService.js index 3de6468..687b6e7 100644 --- a/src/components/LayerController/service/AnimalService.js +++ b/src/components/LayerController/service/AnimalService.js @@ -33,19 +33,6 @@ } }, 1000) } - - /** - * 璁剧疆寮圭獥骞崇Щ浣嶇疆 - * @param pos - * @param value - */ - setPanTo = (pos, value) => { - var position = pos - position = this.layer.latLngToLayerPoint(position) - position.y += value - position = this.layer.layerPointToLatLng(position) - this.layer.flyTo(position) - } } export default AnimalService diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js index 8d7c1c6..68d8d64 100644 --- a/src/components/LayerController/service/LayerFactory.js +++ b/src/components/LayerController/service/LayerFactory.js @@ -1,5 +1,4 @@ import WfsLayerService from './WfsLayerService' -import { clone, pulseEffect } from '../../../utils/utils' import { logicMapper, SERVICE_TYPE } from '../../../conf/Constants' import WmsLayerService from './WmsLayerService' @@ -17,16 +16,14 @@ this.layersLogic = {} this.minZoomLayers = {} this.wmsLayers = [] - // todo 寰呬紭鍖栵紝wmslayerservice璋冪敤锛屾斁杩欓噷涓嶅悎閫� - this.clickSwitch = true // 鍥惧眰鐐瑰嚮寮圭獥寮�鍏� - this.hightlightLayer = options.L.featureGroup({}).addTo(window.map) + this.wmsLayerService = null } init (layerConfig) { - this.initConfig(layerConfig) // wms鏈嶅姟鍙渶瑕佸垵濮嬪寲涓�娆� - this.wmsLayerService = new WmsLayerService(this.wmsLayers) + this.wmsLayerService = new WmsLayerService() this.wmsLayerService.init() + this.initConfig(layerConfig) } initConfig (layerConfig) { @@ -42,8 +39,8 @@ wmsGroupLayerService.init() continue } */ - layers && this.init(config.layers) - childLayer && this.init(config.childLayer) + layers && this.initConfig(config.layers) + childLayer && this.initConfig(config.childLayer) this.initMinZoom(config) this.loadLogic(config) @@ -77,10 +74,6 @@ logic = new BusiLayer() } else if (type === SERVICE_TYPE.WFS) { logic = new WfsLayerService(config) - } else if (type === SERVICE_TYPE.WMS) { - var layer = {} - layer[config.code] = config - this.wmsLayers.push(layer) } } this.layersLogic[code] = logic @@ -167,146 +160,6 @@ this.hide(config) } } - } - } - - /** - * - * 鏍规嵁浼犵殑 feature瀵硅薄瀹氫綅锛� - * @param code - * @param feature - */ - flyByFeature (feature, code) { - this.clearHighlight() - const type = feature.geometry.type - var point = [] - switch (type) { - case 'Point': - point = feature.geometry.coordinates - break - case 'MultiLineString': - var coordinates = feature.geometry.coordinates - var coordinate = coordinates[parseInt(coordinates.length / 2)][0] - if (coordinate.length > 2) { - point = [coordinate[0], coordinate[1]] - } - break - case 'LineString': - var lineString = feature.geometry.coordinates - point = lineString[parseInt(lineString.length / 2)][0] - break - } - if (point.length > 2) { - point.splice(2, 1) - } - this.highlight(feature) - window.map.setView(clone(point).reverse(), 17) - code && this.openPopup(code, feature.id) - } - - clearHighlight () { - this.hightlightLayer.clearLayers() - } - - highlight (feature) { - const type = feature.geometry.type - if (type === 'MultiLineString') { - this.L.geoJSON(feature, { - style: function () { - return { - fillColor: 'red', - color: 'red' - } - } - }).addTo(this.hightlightLayer) - } else if (type === 'Point') { - let point = clone(feature.geometry.coordinates) - if (point.length > 2) { - point = [point[0], point[1]] - } - pulseEffect(point.reverse()) - /* var myIcon = this.L.divIcon({ className: 'my-div-icon' }) - this.L.marker(feature.geometry.coordinates.reverse(), { - icon: myIcon - }).addTo(this.hightlightLayer) */ - } else if (type === 'LineString') { - this.L.polyline(this.reversePolyLine(feature), { color: 'red' }).addTo(this.hightlightLayer) - } - } - - reverseMultiLine (feature) { - const coordinates = feature.geometry.coordinates - var latlng = [] - for (var j = 0; j < coordinates.length; j++) { - const coordinate = coordinates[j] - var xy = [] - for (var k = 0; k < coordinate.length; k++) { - const coor = coordinate[k] - xy.push(coor.reverse()) - } - latlng.push(xy) - } - return latlng - } - - reversePolyLine (feature) { - const coordinates = feature.geometry.coordinates - var latlng = [] - for (var j = 0; j < coordinates.length; j++) { - const coordinate = coordinates[j] - latlng.push(coordinate.reverse()) - } - return latlng - } - - openPopup (layerId, id) { - const layer = this.layers[layerId] - - if (layer) { - 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) - 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) - }) } } } diff --git a/src/components/LayerController/service/WmsLayerGroupService.js b/src/components/LayerController/service/WmsLayerGroupService.js index 6f948d5..0955ffe 100644 --- a/src/components/LayerController/service/WmsLayerGroupService.js +++ b/src/components/LayerController/service/WmsLayerGroupService.js @@ -22,6 +22,7 @@ this.L.tileLayer.wms(PIPELINE_WMS, { format: 'image/png', // 杩斿洖鐨勬暟鎹牸寮� transparent: true, + maxZoom: 21, layers: k // todo }).addTo(this.layer).bringToFront() } diff --git a/src/components/LayerController/service/WmsLayerService.js b/src/components/LayerController/service/WmsLayerService.js index fbc74bd..df7c090 100644 --- a/src/components/LayerController/service/WmsLayerService.js +++ b/src/components/LayerController/service/WmsLayerService.js @@ -1,6 +1,4 @@ -import AjaxUtils from '../../../utils/AjaxUtils' import { WMS_URL } from '../../../conf/Constants' -import Popup from '@views/popup/Popup' import WmsLayerList from '../dataset/WmsLayerList' /** @@ -21,6 +19,7 @@ INFO_FORMAT: 'application/json', TRANSPARENT: true, FEATURE_COUNT: 50, + maxZoom: 21, SRS: 'EPSG:4326', EXCEPTIONS: 'application/vnd.ogc.se_inimage' } @@ -29,40 +28,34 @@ this.featureGroup = this.L.featureGroup({}).addTo(this.map) this.wmsLayerList = new WmsLayerList() - for (var i = 0; i < layersConfig.length; i++) { - const config = layersConfig[i] - this.wmsLayerList.addConfig(config) + if (layersConfig) { + for (var i = 0; i < layersConfig.length; i++) { + const config = layersConfig[i] + this.wmsLayerList.addConfig(config) + } } this.load() } init () { - this.clickListener() } add (config) { this.wmsLayerList.addConfig(config) - const layers = this.wmsLayerList.getLayers() - const filter = this.wmsLayerList.getFilters() + const layers = this.wmsLayerList.getLayers() || '' + const filter = this.wmsLayerList.getFilters() || '' const params = {} - if (filter) { - params.cql_filter = filter - } - if (layers) { - params.layers = layers - } + params.cql_filter = filter + params.layers = layers this.wmsLayer.setParams(params) } remove (config) { - console.log(config) this.wmsLayerList.remove(config.typeName, config.filter) - const layers = this.wmsLayerList.getLayers() - const filter = this.wmsLayerList.getFilters() + const layers = this.wmsLayerList.getLayers() || '' + const filter = this.wmsLayerList.getFilters() || '' const params = { layers: layers } - if (filter) { - params.cql_filter = filter - } + params.cql_filter = filter this.wmsLayer.setParams(params) } @@ -81,130 +74,6 @@ params.cql_filter = filter } this.wmsLayer = this.L.tileLayer.wms(WMS_URL, params).addTo(this.map) - } - - clickListener () { - window.map.on('click', (e) => { - // console.log(e) - window.layerFactory.clearHighlight() - this.featureGroup.clearLayers() - 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() - const layers = this.wmsLayerList.getLayers() - const filter = this.wmsLayerList.getFilters() - if (layers.length > 0) { - const params = Object.assign({ - LAYERS: layers, - QUERY_LAYERS: layers, - WIDTH: size.x, - HEIGHT: size.y, - X: Math.round(point.x), - Y: Math.round(point.y), - BBOX: this.map.getBounds().toBBoxString() - }, this.params) - if (filter.length > 0) { - params.cql_filter = filter - } - AjaxUtils.get4JsonDataByUrl(WMS_URL, params, (res) => { - const features = res.data.features - /** - * { - * title: 'New Tab', - * name: newTabName, - * content: 'New Tab content' - * } - * @type {*[]} - */ - const popupDatas = [] - if (features) { - for (var i = 0; i < features.length; i++) { - const feature = features[i] - const properties = feature.properties - this.highlight(feature) - // const coordinates = feature.geometry.coordinates - popupDatas.push({ - title: properties.wellname || properties.devicename || properties.name || properties.pipename, - name: feature.id, - content: properties - }) - } - } - if (popupDatas.length > 0) { - var myIcon = this.L.divIcon({ className: 'my-div-icon' }) - this.L.marker(e.latlng, { - icon: myIcon - }).addTo(this.featureGroup)/* - .bindPopup((layer) => { - this.popupComp.setDatas(popupDatas) - this.popupComp.setShow() - return this.popupComp.$el - }, { - className: 's-map-popup', - minWidth: 300, - closeButton: false, - autoClose: false - }) - .openPopup() */ - - if (window.layerFactory.clickSwitch) { - window.$layer.open({ - content: { - content: Popup, // 缁勪欢 - data: { // 浼犻�掔殑鍙傛暟 - datas: popupDatas - } - }, - title: '', // 鏍囬 - left: e.originalEvent.clientX, - top: e.originalEvent.clientY - }) - } - // this.popupComp.setDatas(popupDatas) - // this.popupComp.setShow() - } - }) - } - }) - } - - reverseMultiLine (feature) { - const coordinates = feature.geometry.coordinates - var latlng = [] - for (var j = 0; j < coordinates.length; j++) { - const coordinate = coordinates[j] - var xy = [] - for (var k = 0; k < coordinate.length; k++) { - const coor = coordinate[k] - xy.push(coor.reverse()) - } - latlng.push(xy) - } - return latlng - } - - reversePolyLine (feature) { - const coordinates = feature.geometry.coordinates - var latlng = [] - for (var j = 0; j < coordinates.length; j++) { - const coordinate = coordinates[j] - latlng.push(coordinate.reverse()) - } - return latlng - } - - highlight (feature) { - const type = feature.geometry.type - if (type === 'MultiLineString') { - this.L.polyline(this.reverseMultiLine(feature), { color: 'red' }).addTo(this.featureGroup) - } else if (type === 'Point') { - var myIcon = this.L.divIcon({ className: 'my-div-icon' }) - this.L.marker(feature.geometry.coordinates.reverse(), { - icon: myIcon - }).addTo(this.featureGroup) - } else if (type === 'LineString') { - this.L.polyline(this.reversePolyLine(feature), { color: 'red' }).addTo(this.featureGroup) - } } } diff --git a/src/components/helpers/LocateHelper.js b/src/components/helpers/LocateHelper.js new file mode 100644 index 0000000..4160b89 --- /dev/null +++ b/src/components/helpers/LocateHelper.js @@ -0,0 +1,123 @@ +import { pulseEffect, reversePolyLine } from '../../utils/utils' +import Popup from '@views/popup/Popup' +import { LAYERPROPS, LAYERS } from '../../conf/Constants' +/** + * 鏍规嵁浼犵殑 feature瀵硅薄瀹氫綅锛� + * @param code + * @param feature + */ +export const fitBounds = function (feature) { + const type = feature.geometry.type + switch (type) { + case 'Point': + var point = feature.geometry.coordinates + point = [point[1], point[0]] + window.map.setView(point, 17) + break + case 'MultiLineString': + window.map.fitBounds(window.L.geoJSON(feature).getBounds()) + break + case 'LineString': + window.map.fitBounds(window.L.polyline(reversePolyLine(feature)).getBounds()) + break + } +} + +export const highlight = function (feature, config) { + const L = window.L + const type = feature.geometry.type + window.mapManager.clearHighlight() + const highlightLayer = window.mapManager.hightlightLayer + if (type === 'MultiLineString') { + L.geoJSON(feature, { + style: function () { + return { + fillColor: 'red', + color: 'red' + } + } + }).addTo(highlightLayer) + } else if (type === 'Point') { + // 鍙犲姞涓�涓ぇ灏哄鐨勫浘鏍� + let point = feature.geometry.coordinates + point = [point[1], point[0]] + + if (config) { + L.marker(point, { + icon: L.icon({ + iconUrl: '/assets/images/map/' + config.icon, + iconSize: [30, 30], + iconAnchor: [15, 15] + }) + }).addTo(highlightLayer) + } + pulseEffect(point) + const features = window.mapManager.loadWfsDatas(point) + openPopup(point, features) + } else if (type === 'LineString') { + L.polyline(reversePolyLine(feature), { color: 'red' }).addTo(highlightLayer) + } +} + +export const openPopup = function (xy, features) { + const lt = window.map.latLngToContainerPoint(xy) + const datas = popupDatas(features) + if (datas.length > 0) { + window.$layer.open({ + content: { + comp: Popup, // 缁勪欢 + data: { // 浼犻�掔殑鍙傛暟 + datas: datas + } + }, + title: '', // 鏍囬 + left: lt.x, + top: lt.y + }) + } +} + +const popupDatas = function (features) { + const datas = [] + if (features) { + for (var i = 0; i < features.length; i++) { + const feature = features[i] + const id = feature.id + const properties = feature.properties + const ids = id.split('.') + + const propValues = LAYERPROPS[ids[0]] + const contents = {} + for (const k in properties) { + if (propValues[k]) { + contents[propValues[k]] = properties[k] + } + } + datas.push({ + title: LAYERS[ids[0]], + name: feature.id, + content: contents + }) + console.log(properties) + } + } + return datas +} + +export const getLayer = function (layerId, id) { + const layer = this.layers[layerId] + + if (layer) { + layer.eachLayer(function (layer) { + const layers = layer.getLayers() + for (var i = 0; i < layers.length; i++) { + const lay = layers[i] + const feature = lay.feature + if (feature.id === id) { + return lay + } + } + }) + } + return null +} diff --git a/src/components/helpers/MapManager.js b/src/components/helpers/MapManager.js new file mode 100644 index 0000000..9795d33 --- /dev/null +++ b/src/components/helpers/MapManager.js @@ -0,0 +1,59 @@ +import AjaxUtils from '../../utils/AjaxUtils' +import { WMS_URL } from '../../conf/Constants' +import { openPopup } from './LocateHelper' + +class MapManager { + constructor () { + this.hightlightLayer = window.L.featureGroup({}).addTo(window.map) + this.clickDialogSwitch = true // 鍥惧眰鐐瑰嚮寮圭獥寮�鍏� + this.L = window.L + this.map = window.map + // wms getfeatureinfo 榛樿鍙傛暟 + this.defaultWmsParams = { + VERSION: '1.1.1', + SERVICE: 'WMS', + REQUEST: 'GetFeatureInfo', + // bbox: bbox, + FORMAT: 'image/png', + INFO_FORMAT: 'application/json', + TRANSPARENT: true, + FEATURE_COUNT: 50, + SRS: 'EPSG:4326', + EXCEPTIONS: 'application/vnd.ogc.se_inimage' + } + } + + mapClickListener () { + this.map.on('click', (e) => { + // console.log(e) + this.clearHighlight() + this.loadWfsDatas(e.latlng) + }) + } + + loadWfsDatas (latlng) { + const size = this.map.getSize() + var point = this.map.latLngToContainerPoint(latlng, this.map.getZoom()) + const wmsLayerService = window.layerFactory.wmsLayerService + const layers = wmsLayerService.wmsLayerList.getLayers() + // const filters = wmsLayerService.wmsLayerList.getFilters() + const params = Object.assign({ + LAYERS: layers, + QUERY_LAYERS: layers, + WIDTH: size.x, + HEIGHT: size.y, + X: Math.round(point.x), + Y: Math.round(point.y), + BBOX: this.map.getBounds().toBBoxString() + }, this.defaultWmsParams) + AjaxUtils.get4JsonDataByUrl(WMS_URL, params, (res) => { + openPopup(latlng, res.data.features) + }) + } + + clearHighlight () { + this.hightlightLayer.clearLayers() + } +} + +export default MapManager diff --git a/src/components/layer/src/layer.js b/src/components/layer/src/layer.js index b0581c1..2bf291b 100644 --- a/src/components/layer/src/layer.js +++ b/src/components/layer/src/layer.js @@ -23,10 +23,12 @@ console.log(opt) self.closeAll() var options = mergeJson(opt, defOptions) + console.log('11111' + options) const id = `notification_${new Date().getTime()}_${seed++}` options.id = id options.layer = self - options.content.content = Vue.extend(options.content.content) + options.content.comp = Vue.extend(options.content.comp) + console.log(options) const instance = new LayerVueExtend({ data: options }) diff --git a/src/components/layer/src/layer.vue b/src/components/layer/src/layer.vue index 3221a11..7877f0f 100644 --- a/src/components/layer/src/layer.vue +++ b/src/components/layer/src/layer.vue @@ -47,10 +47,8 @@ }, init () { const propsData = helper.deepClone(this.content.data) || {} - propsData.layerid = this.id - propsData.lydata = this.content.data - propsData.lyoption = this.options - const instance = new this.content.content({ + console.log(propsData) + const instance = new this.content.comp({ // parent: this.content.parent, propsData: propsData }) diff --git a/src/components/panel/topicSearch/DischargeSearch.vue b/src/components/panel/topicSearch/DischargeSearch.vue index f0fd797..f29036a 100644 --- a/src/components/panel/topicSearch/DischargeSearch.vue +++ b/src/components/panel/topicSearch/DischargeSearch.vue @@ -170,7 +170,7 @@ methods: { flyto () { const pos = [39.90751504898071, 116.38927817344666] - window.map.flyTo(pos, 15) + window.map.setView(pos, 15) }, // 鍖哄煙绛涢�� areaType (val) { diff --git a/src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue b/src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue index 873db6e..fb1eb41 100644 --- a/src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue +++ b/src/components/panel/topicSearch/EnterpriseEmergency/EventQuery.vue @@ -26,7 +26,8 @@ </el-form-item> <el-form-item label="浜嬩欢绫诲瀷锛�"> <el-radio-group v-model="form.transferData" class="levelOfRisk"> - <el-radio v-for="(item,index) in form.levelOfRisk" :label="item.value" :key="index"> + <el-radio v-for="(item,index) in form.levelOfRisk" :label="item.value" :key="index" + @change="redioChange(item.name)"> <span class="levelOfRisk-type">{{ item.name }}</span> </el-radio> </el-radio-group> @@ -38,12 +39,28 @@ </el-form> </el-form> <el-scrollbar style="height:286.22px"> - <div class="environmental-risk-list" v-for="(item,index) in list" :key="index" - :class="activeNum===index?'hover':''"> + <!-- <div class="environmental-risk-list" v-for="(item,index) in list" :key="index" :class="activeNum===index?'hover':''" @click="accordPopup(item)">--> + <!-- <!– <i class="state"></i>–>--> + <!-- <img class="state" :src="getImgSrc(item.properties.type)" style="background: none"/>--> + <!-- <div>--> + <!-- <h3 @click="handleLocation(item,index)">浜嬩欢鍚嶇О:XXX浜嬩欢</h3>--> + <!-- <h5>--> + <!-- 浜嬩欢浜嬩欢:2021骞�3鏈�21鏃�--> + <!-- <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;">鍒犻櫎</el-button>--> + <!-- </h5>--> + <!-- <p>--> + <!-- 浜嬩欢鐘舵�侊細<span>瀹℃壒闃舵</span>--> + <!-- </p>--> + <!-- <p>浜嬩欢绫诲瀷锛�<span>{{ item.properties.pipecode }}</span>--> + <!-- <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;">浜嬩欢绠$悊--> + <!-- </el-button>--> + <!-- </p>--> + <!-- </div>--> + <!-- </div>--> + <div class="environmental-risk-list"> <!-- <i class="state"></i>--> - <img class="state" :src="getImgSrc()" style="background: none"/> <div> - <h3 @click="handleLocation(item,index)">浜嬩欢鍚嶇О:XXX浜嬩欢</h3> + <h3>浜嬩欢鍚嶇О:XXX浜嬩欢</h3> <h5> 浜嬩欢浜嬩欢:2021骞�3鏈�21鏃� <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;">鍒犻櫎</el-button> @@ -51,8 +68,10 @@ <p> 浜嬩欢鐘舵�侊細<span>瀹℃壒闃舵</span> </p> - <p>浜嬩欢绫诲瀷锛�<span>{{ item.properties.pipecode }}</span> - <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;">浜嬩欢绠$悊 + <p>浜嬩欢绫诲瀷锛�<span>妯℃嫙绠$嚎浜嬩欢</span> + <el-button class="rt btn00fff6" size="mini" style="margin-right: 0.04rem;" + @click="accordPopup()"> + <span>浜嬩欢绠$悊</span> </el-button> </p> </div> @@ -106,13 +125,34 @@ this.wfsHelper = new WfsHelper() }, methods: { + // 鐐瑰嚮浜嬩欢绠$悊 + accordPopup () { + console.log('item') + window.$layer.open({ + content: { + content: ReportPopup, // 缁勪欢 + parent: this, // 鐖剁粍浠� + data: { // 浼犻�掔殑鍙傛暟 + // storagePlaceId: e.layer.options.totransferData.StoragePlaceId + } + } + // title: 'title' // 鏍囬 + }) + }, + // radio鏁版嵁閫夋嫨 + redioChange (item) { + console.log(item) + }, + // 鏍规嵁鏁版嵁杩斿洖灞曠ず涓嶅悓鐨勫浘鐗� getImgSrc () { const icon = this.form.dataType.icon return icon ? 'assets/images/map/' + icon : '' }, + // form 2 琛ㄥ崟鏁版嵁閫夋嫨浜嬩欢 handleDataType () { this.list = [] }, + // form 琛ㄥ崟鏁版嵁閫夋嫨 handlePipelineType (val) { this.list = [] for (let i = 0; i < this.items.length; i++) { @@ -123,6 +163,7 @@ } } }, + // 鏁版嵁鎼滅储浜嬩欢 async handleSearch () { this.list = [] this.wfsHelper.clearFilter() @@ -137,25 +178,13 @@ this.list = res.features } }, + // 鎼滅储鐨勬暟鎹偣鍑讳簨浠� handleLocation (val, index) { console.log(val) this.activeNum = index // layer && layer.openPopup() // window.layerFactory.flyByFeature(val, this.form.dataType.code) window.map.flyTo([val.properties.y, val.properties.x], 15) - }, - btnAffiliatedFacilities () { - console.log('item') - window.$layer.open({ - content: { - content: ReportPopup, // 缁勪欢 - parent: this, // 鐖剁粍浠� - data: { // 浼犻�掔殑鍙傛暟 - // storagePlaceId: e.layer.options.totransferData.StoragePlaceId - } - } - // title: 'title' // 鏍囬 - }) } } } diff --git a/src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue b/src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue index 40bc1b5..3c9a2ee 100644 --- a/src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue +++ b/src/components/panel/topicSearch/EnterpriseEmergency/ResourcesQuery.vue @@ -43,8 +43,8 @@ <div class="environmental-risk-list" v-for="(item,index) in list" :key="index" :class="activeNum===index?'hover':''" @click="handleLocation(item,index)"> <img class="state" :src="getImgSrc(item.properties.type)" style="background: none"/> - <h3>璧勬簮绫诲瀷:{{item.properties.adminzonename}}</h3> - <h5>璧勬簮鍚嶇О:{{item.properties.type}}</h5> + <h3>{{changeAmount}}绫诲瀷:{{item.properties.type}}</h3> + <h5>{{changeAmount}}鍚嶇О:{{item.properties.name}}</h5> <p>璐熻矗浜�:<span>{{item.properties.resperson}}</span></p> <p>鐢佃瘽:<span>{{item.properties.telephone}}</span></p> </div> @@ -78,7 +78,8 @@ list: [], items: [LayerEmergencySource, LayerSurroundings], subItems: LayerEmergencySource.layers || LayerSurroundings.layers, - WfsHelper: null + WfsHelper: null, + changeAmount: '璧勬簮' } }, mounted () { @@ -102,8 +103,10 @@ } if (this.form.pipelineType === '搴旀�ヨ祫婧�') { this.subItems = LayerEmergencySource.layers + this.changeAmount = '璧勬簮' } else if (this.form.pipelineType === '鍛ㄨ竟鐜') { this.subItems = LayerSurroundings.layers + this.changeAmount = '鐜' } }, handleDataType (val) { @@ -125,6 +128,7 @@ this.wfsHelper.addLike('name', this.form.keyword) } const res = await AjaxUtils.GetDataAsynByUrl(this.wfsHelper.getUrl(), {}) + console.log(res) if (res instanceof Object && Object.prototype.hasOwnProperty.call(res, 'features')) { this.list = res.features } diff --git a/src/components/panel/topicSearch/SewersSearch.vue b/src/components/panel/topicSearch/SewersSearch.vue index ad48f87..03c28d5 100644 --- a/src/components/panel/topicSearch/SewersSearch.vue +++ b/src/components/panel/topicSearch/SewersSearch.vue @@ -83,6 +83,7 @@ // 寮曞叆缁勪欢鍐呭 import SewersAnalysis from '@components/panel/topicSearch/SewersSelect/SewersAnalysis' import SewersHistory from '@components/panel/topicSearch/SewersSelect/SewersHistory' +import { fitBounds, highlight } from '../../helpers/LocateHelper' export default { name: 'SewersSearch', @@ -161,11 +162,12 @@ } }, handleLocation (val, index) { - console.log(val) + console.log(this.form.dataType) // console.log(val) this.activeNum = index // layer && layer.openPopup() - window.layerFactory.flyByFeature(val, this.form.dataType.code) + fitBounds(val, this.form.dataType.code) + highlight(val, this.form.dataType) }, btnAffiliatedFacilities (val, index) { this.activeNum = index @@ -176,7 +178,8 @@ } else { this.fuShuSheShiShow = false } - window.layerFactory.flyByFeature(val, this.form.dataType.code) + fitBounds(val, this.form.dataType.code) + highlight(val) } }, mounted () { diff --git a/src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue b/src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue index 9b9785b..71cc2fb 100644 --- a/src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue +++ b/src/components/panel/topicSearch/SewersSelect/SewersAnalysis.vue @@ -439,10 +439,10 @@ this.linkPipeline.push(line) }) }, - // 杩為�氭�� 鍒嗘瀽缁撴灉table鍒楄〃鏁版嵁閫夋嫨鐐瑰嚮浜嬩欢 + // 瀹氫綅鏂规硶浜嬩欢 linkResultSelect (e) { // console.log('杩為�氭�у垎鏋愮粨鏋滃垪琛ㄧ偣鍑�') - // console.log(e) + console.log(e) const geom = JSON.parse(e.geomText) if (this.currentSelectResultLine != null) { this.currentSelectResultLine.remove() @@ -483,8 +483,8 @@ this.selectPipeLine() }, async bgSelect (e) { - console.log('閫夋嫨鐖嗙绠℃') - console.log(e) + // console.log('閫夋嫨鐖嗙绠℃') + // console.log(e) this.bgFm = [] if (this.bgMarker != null) { this.bgMarker.remove() @@ -526,12 +526,10 @@ this.bgPoint = res.data[0].startControlPoint - const point = JSON.parse(this.bgPoint.geomText) - - const p = [point.coordinates[1], point.coordinates[0]] - + // const point = JSON.parse(this.bgPoint.geomText) + // const p = [point.coordinates[1], point.coordinates[0]] // this.bgMarker = this.createFlowMarker(p) - this.bgMarker = pulseEffect(p) + // this.bgMarker = pulseEffect(p) // this.bgMarker.bindTooltip(this.bgPoint.pointnumbe) // this.bgMarker.addTo(window.map) // window.map.flyTo(p) @@ -561,11 +559,11 @@ }, bgFmClick (e) { // console.log('鐐瑰嚮褰卞搷鐨勯榾闂�') - console.log(e) + // console.log(e) // const point = [e.data[0][0], e.data[0][1]] const point = [e.startControlPoint.y, e.startControlPoint.x] - // const marker = this.createFlowMarker(point) pulseEffect(point) + // const marker = this.createFlowMarker(point) // marker.addTo(window.map) // window.map.flyTo(point, 17) }, diff --git a/src/components/panel/topicSearch/SolidWasteSearch.vue b/src/components/panel/topicSearch/SolidWasteSearch.vue index e536771..cc8a508 100644 --- a/src/components/panel/topicSearch/SolidWasteSearch.vue +++ b/src/components/panel/topicSearch/SolidWasteSearch.vue @@ -30,7 +30,6 @@ <el-scrollbar style="height:286.22px"> <div class="environmental-risk-list" v-for="(item,index) in searchDataDisplay" :key="index" @click="setBounced(item)"> - <!-- <i class="state"></i>--> <img src="../../../../public/assets/images/map/solidwaste/gf_green2.png" alt="" class="state"> <div> <h3>###鐐煎寲閮�</h3> @@ -159,7 +158,7 @@ }, // 鏁版嵁灞曠ず,鐐瑰嚮杩涜寮规鍙婄偣鐨勫睍绀� setBounced (val) { - // console.log(val) + console.log(val) const pos = [val.Latitude, val.Longitude] window.map.setView(pos, 15) window.$layer.open({ @@ -173,7 +172,7 @@ title: val.Name }) pulseEffect([val.Latitude, val.Longitude]) - setPanTo(pos, 250) + setPanTo(pos, 200) } } } diff --git a/src/conf/Constants.js b/src/conf/Constants.js index 3bab997..0935f69 100644 --- a/src/conf/Constants.js +++ b/src/conf/Constants.js @@ -35,35 +35,179 @@ ICON_SIZE: [10, 10] } -export const props = { - code: '缂栧彿', - name: '鍚嶇О', - teamname: '鍚嶇О', - pfktype: '鎺掓斁鍙g被鍨�', - level: '绾у埆', - length: '闀垮害(m)', - unitname: '鍗曚綅鍚嶇О', - pipename: '绠$嚎鍚嶇О', - subchaname: '鏀嚎鍚嶇О', - subchacode: '鏀嚎缂栫爜', - mediumtype: '杈撻�佷粙璐�', - startposname: '璧风偣浣嶇疆鍚嶇О', - endposname: '缁堢偣浣嶇疆鍚嶇О', - pressureating: '璁捐鍘嬪姏锛圡Pa锛�', - designtranyear: '璁捐杈撻噺锛堜竾绔�/骞达級', - earningcapacity: '瀹為檯杈撻噺锛堜竾绔�/骞达級', - buriedtime: '鍩嬭鏃堕棿', - coatingmaterial: '闃茶厫鐘跺喌', - inservicetime: '鎶曚骇鏃堕棿', - reportname: '濉姤浜哄鍚�', - reportphone: '濉姤浜鸿仈绯绘柟寮�', - diameter: '绠″緞(mm)', - meterial: '鏉愯川', - pressuerating: '绠¢亾鍘嬪姏(Mpa)', - embeddingmode: '鍩嬭鏂瑰紡', - pipetrenchtype: '绠℃矡绫诲瀷', - datecollected: '鎺㈡祴鏃堕棿', - operationalstatus: '杩愯鐘舵��', - fourtype: '鍥涢�氱被鍨�', - fourm: '鍥涢�氭潗鏂�' +export const LAYERS = { + pipenetwork: '绠$綉', + pipeline: '绠$嚎', + manhole: '绐ㄤ簳', + valve: '闃�闂�', + pipegallery: '绠″粖锛堝甫锛�', + piperack: '绠℃灦锛堝ⅸ锛�', + tee: '涓夐��', + fourlink: '鍥涢��', + elbow: '寮ご', + raingate: '闆ㄧ瀛�', + firedike: '闃茬伀鍫�', + collectingbasin: '闆嗘按姹狅紙缃愶級', + dischargeport: '鎺掓斁鍙�', + overflowweir: '婧㈡祦鍫�', + oilseparator: '闅旀补姹�', + pointhydrology: '姘翠綋', + pointpreservationzone: '鑷劧淇濇姢鍖�', + hospital: '鍖婚櫌', + emergencyres: '绀句細涓撲笟搴旀�ユ晳鎻撮槦浼�', + emergencyesources: '搴旀�ョ墿璧�', + firefightingunit: '娑堥槻鍗曚綅' +} + +export const LAYERPROPS = { + // 绠$綉 + pipenetwork: { + // 绠$綉 + name: '鍚嶇О', + LINENUMTYPE: '绠$嚎绫诲瀷', + PIPENAME: '绠$嚎鍚嶇О', + MEDIUMTYPE: '杈撻�佷粙璐�', + LENGTH: '闀垮害(m)', + STARTPOSNAME: '璧风偣浣嶇疆鍚嶇О', + ENDPOSNAME: '缁堢偣浣嶇疆鍚嶇О', + BURIEDTIME: '鍩嬭鏃堕棿', + COATINGMATERIAL: '闃茶厫鐘跺喌', + INSERVICETIME: '鎶曚骇鏃堕棿', + UNITNAME: '鎵�灞炲崟浣嶅悕绉�', + ORGNAME: '鎵�灞炰紒涓氬悕绉�', + OPERATIONALSTATUS: '杩愯鐘舵��' + }, + // 绠$嚎 + pipeline: { + // 绠$綉 + name: '鍚嶇О', + linenumtype: '绠$嚎绫诲瀷', + pipename: '绠$嚎鍚嶇О', + mediumtype: '杈撻�佷粙璐�', + length: '闀垮害(m)', + startposname: '璧风偣浣嶇疆鍚嶇О', + endposname: '缁堢偣浣嶇疆鍚嶇О', + buriedtime: '鍩嬭鏃堕棿', + coatingmaterial: '闃茶厫鐘跺喌', + inservicetime: '鎶曚骇鏃堕棿', + unitname: '鎵�灞炲崟浣嶅悕绉�', + orgname: '鎵�灞炰紒涓氬悕绉�', + operationalstatus: '杩愯鐘舵��' + }, + // 绐ㄤ簳 + manhole: { + type: '绫诲瀷', + wellmaterial: '浜曠洊鏉愯川', + havesafetynet: '鏄惁鏈夊畨鍏ㄧ綉', + datasource: '鏁版嵁鏉ユ簮', + operationalstatus: '杩愯鐘舵��' + }, + // 闃�闂� + valve: { + valvetype: '闃�闂ㄧ被鍨�', + executagencyf: '鎵ц鏈烘瀯褰㈠紡', + datasource: '鏁版嵁鏉ユ簮', + operationalstatus: '杩愯鐘舵��' + }, + // 绠″粖锛堝甫锛� + pipegallery: { + datasource: '鏁版嵁鏉ユ簮', + operationalstatus: '杩愯鐘舵��' + }, + // 绠℃灦锛堝ⅸ锛� + piperack: { + piperacktype: '绫诲瀷', + piperackst: '绠℃灦(澧╋級缁撴瀯绫诲瀷', + longitudinalpiperack: '鏄惁鏈夌旱鍚戞灦', + datasource: '鏁版嵁鏉ユ簮', + operationalstatus: '杩愯鐘舵��' + }, + // 涓夐�� + tee: { + teetype: '涓夐�氱被鍨�', + exportconnectm: '鍑哄彛杩炴帴鏂瑰紡', + entrycontype: '鍏ュ彛杩炴帴鏂瑰紡', + teem: '涓夐�氭潗鏂�', + branchconntype: '鏀杩炴帴绫诲瀷', + operationalstatus: '杩愯鐘舵��' + }, + // 鍥涢�� + fourlink: { + fourtype: '鍥涢�氱被鍨�', + exportcontype: '鍑哄彛杩炴帴鏂瑰紡', + entrycontype: '鍏ュ彛杩炴帴鏂瑰紡', + fourm: '鍥涢�氭潗鏂�', + branchconntype1: '鏀嚎1杩炴帴鏂瑰紡', + branchconntype2: '鏀嚎2杩炴帴鏂瑰紡', + operationalstatus: '杩愯鐘舵��' + }, + // 寮ご + elbow: { + elbowtype: '寮ご绫诲瀷', + elbowmaterial: '寮ご鏉愭枡', + anticorros: '闃茶厫鏉愭枡', + entryconntype: '鍏ュ彛杩炴帴鏂瑰紡', + outletconntype: '鍑哄彛杩炴帴鏂瑰紡', + operationalstatus: '杩愯鐘舵��' + }, + // 闆ㄧ瀛� + raingate: { + operationalstatus: '杩愯鐘舵��' + }, + // 闃茬伀鍫� + firedike: { + operationalstatus: '杩愯鐘舵��' + }, + // 闆嗘按姹狅紙缃愶級 + collectingbasin: { + operationalstatus: '杩愯鐘舵��' + }, + // 鎺掓斁鍙� + dischargeport: { + mediumtype: '浠嬭川', + pfktype: '鎺掓斁鍙g被鍨�', + level: '绾у埆', + operationalstatus: '杩愯鐘舵��' + }, + // 鎴祦闂� + + // 婧㈡祦鍫� + overflowweir: { + mediumtype: '闃叉孩浠嬭川', + operationalstatus: '杩愯鐘舵��' + }, + // 闅旀补姹� + oilseparator: { + operationalstatus: '杩愯鐘舵��' + }, + // 姘翠綋 + pointhydrology: { + hydrotype: '姘寸郴绫诲瀷', + drinkingresourceind: '鏄惁鏄ギ鐢ㄦ按婧�', + seasonalriverind: '鏄惁鏄鑺傛�ф渤娴�', + reservoirlocation: '姘村簱浣嶇疆', + operationalstatus: '杩愯鐘舵��' + }, + // 鑷劧淇濇姢鍖� + pointpreservationzone: { + datasource: '鏁版嵁鏉ユ簮' + }, + // 鍖婚櫌 + hospital: { + hospitalleaval: '鍖婚櫌璧勮川绛夌骇', + subtypecd: '鍖婚櫌绫诲瀷', + datasource: '鏁版嵁鏉ユ簮' + }, + // 绀句細涓撲笟搴旀�ユ晳鎻撮槦浼� + emergencyres: { + datasource: '鏁版嵁鏉ユ簮' + }, + // 搴旀�ョ墿璧� + emergencyesources: { + datasource: '鏁版嵁鏉ユ簮' + }, + // 娑堥槻鍗曚綅 + firefightingunit: { + datasource: '鏁版嵁鏉ユ簮' + } } diff --git a/src/conf/MapConfig.js b/src/conf/MapConfig.js index ec1f64e..4cae2f1 100644 --- a/src/conf/MapConfig.js +++ b/src/conf/MapConfig.js @@ -23,7 +23,6 @@ crs: L.CRS.EPSG4326, minZoom: 3, maxZoom: 21, - // center: [26, 104], center: [34.828558921813965, 117.41676807403564], zoom: 5, // center: [39.907214641571045, 116.39019012451172], diff --git a/src/conf/layers/LayerArea.js b/src/conf/layers/LayerArea.js index 5a2106c..c4d82db 100644 --- a/src/conf/layers/LayerArea.js +++ b/src/conf/layers/LayerArea.js @@ -13,6 +13,7 @@ sname: '鍏徃', // 琛ㄥ悕 checked: true, // 榛樿閫変腑鐘舵�� type: 0, + icon: 'sewers/鍏徃.png', legendImage: '../.././assets/images/map/company_refining.png' }, { @@ -21,6 +22,7 @@ sname: '鐮佸ご', checked: false, // 榛樿閫変腑鐘舵�� type: 0, + icon: 'sewers/鐮佸ご.png', legendImage: '../.././assets/images/map/sewers/鐮佸ご.png' }, { @@ -28,6 +30,7 @@ name: '瑁呯疆鍖�', sname: '瑁呯疆鍖�', checked: false, // 榛樿閫変腑鐘舵�� + icon: 'sewers/瑁呯疆鍖�.png', typeName: 'sewer:unitareaboundary' } ] diff --git a/src/conf/layers/LayerFsss.js b/src/conf/layers/LayerFsss.js index b0e4350..9ab0a79 100644 --- a/src/conf/layers/LayerFsss.js +++ b/src/conf/layers/LayerFsss.js @@ -47,6 +47,7 @@ minZoom: 16, type: SERVICE_TYPE.WMS, typeName: 'sewer:piperack', + icon: 'sewers/绠℃灦.png', checked: false }, { @@ -56,6 +57,7 @@ minZoom: 16, type: SERVICE_TYPE.WMS, typeName: 'sewer:pipegallery', + icon: 'sewers/绠″粖.png', checked: false }, { @@ -63,6 +65,7 @@ name: '娴佸悜', sname: 'ywslx', type: SERVICE_TYPE.WMS, + icon: 'sewers/娴佸悜.png', checked: false }, { diff --git a/src/conf/layers/LayerHbss.js b/src/conf/layers/LayerHbss.js index 7727670..54f61f7 100644 --- a/src/conf/layers/LayerHbss.js +++ b/src/conf/layers/LayerHbss.js @@ -35,6 +35,7 @@ minZoom: 16, type: SERVICE_TYPE.WMS, typeName: 'sewer:firedike', + icon: 'sewers/闃茬伀鍫�.png', checked: false }, { @@ -53,6 +54,7 @@ sname: '鎴祦闂�', type: SERVICE_TYPE.WMS, typeName: 'sewer:collectingbasin', + icon: 'sewers/鎴祦闂�.png', checked: false }, { @@ -62,6 +64,7 @@ minZoom: 16, type: SERVICE_TYPE.WMS, typeName: 'ewer:overflowweir', + icon: 'sewers/婧㈡祦鍫�.png', checked: false }, { diff --git a/src/conf/layers/LayerPipeLines.js b/src/conf/layers/LayerPipeLines.js index bbccde9..476db82 100644 --- a/src/conf/layers/LayerPipeLines.js +++ b/src/conf/layers/LayerPipeLines.js @@ -17,7 +17,7 @@ code: 'rainline', name: '闆ㄦ按绾�', sname: '绠$綉', - checked: false, + checked: true, type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', @@ -40,6 +40,7 @@ type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', + icon: 'sewers/浜嬫晠姘�.png', minZoom: 13, filter: 'mediumtype = \'浜嬫晠姘碶'', index: 1 @@ -52,6 +53,7 @@ type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', + icon: 'sewers/鍚补姹℃按.png', minZoom: 13, color: '#ffaa00', filter: 'mediumtype = \'鍚补姹℃按\'', @@ -69,6 +71,7 @@ type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', + icon: 'sewers/鍚洂姹℃按.png', minZoom: 13, filter: 'mediumtype = \'鍚洂姹℃按\'', index: 1 @@ -81,6 +84,7 @@ type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', + icon: 'sewers/鍚⒈姹℃按.png', filter: 'mediumtype = \'鍚⒈姹℃按\'', minZoom: 10, index: 1 @@ -93,6 +97,7 @@ type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', + icon: 'sewers/鍚~姹℃按.png', filter: 'mediumtype = \'鍚~姹℃按\'', minZoom: 10, index: 1 @@ -105,6 +110,7 @@ type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', + icon: 'sewers/鐢熸椿姹℃按.png', filter: 'mediumtype = \'鐢熸椿姹℃按\'', minZoom: 13, index: 1 @@ -117,6 +123,7 @@ type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', + icon: 'sewers/鍑�鍖栨按.png', filter: 'mediumtype = \'鍑�鍖栨按\'', minZoom: 13, index: 1 @@ -128,6 +135,7 @@ type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', + icon: 'sewers/寰幆姘�.png', filter: 'mediumtype = \'寰幆姘碶'', checked: false, minZoom: 13, @@ -141,6 +149,7 @@ type: SERVICE_TYPE.WMS, layerGroup: 'sewer:pipeline_group', typeName: 'sewer:pipeline', + icon: 'sewers/鐢熶骇姹℃按.png', filter: 'mediumtype = \'鐢熶骇姹℃按\'', minZoom: 13, color: '#a8a800', diff --git a/src/utils/utils.js b/src/utils/utils.js index 2328fd0..304c202 100644 --- a/src/utils/utils.js +++ b/src/utils/utils.js @@ -27,15 +27,15 @@ * 鑴夊啿鏁堟灉 */ export function pulseEffect (xy) { - let times = 5 - const colors = ['#98FB98', '#ff0000'] + let times = 50 + const colors = ['#00f100', '#ff0000'] // 鎻掍欢 鏁堟灉瀹炵幇 var pulsingIcon = window.L.icon.pulse({ - iconSize: [20, 20], + iconSize: [30, 30], color: colors[0], fillColor: '' }) - var picGroupMarker = window.L.marker(xy, { icon: pulsingIcon }).addTo(window.map) + var picGroupMarker = window.L.marker(xy, { icon: pulsingIcon }).addTo(window.mapManager.hightlightLayer) // 瀹氭椂 var timeInterval = setInterval(() => { if (times > 0) { @@ -47,6 +47,31 @@ }, 1000) } +export function reversePolyLine (feature) { + const coordinates = feature.geometry.coordinates + var latlng = [] + for (var j = 0; j < coordinates.length; j++) { + const coordinate = coordinates[j] + latlng.push(coordinate.reverse()) + } + return latlng +} + +export function reverseMultiLine (feature) { + const coordinates = feature.geometry.coordinates + var latlng = [] + for (var j = 0; j < coordinates.length; j++) { + const coordinate = coordinates[j] + var xy = [] + for (var k = 0; k < coordinate.length; k++) { + const coor = coordinate[k] + xy.push(coor.reverse()) + } + latlng.push(xy) + } + return latlng +} + /** * 璁剧疆寮圭獥骞崇Щ浣嶇疆 * @param pos diff --git a/src/views/MapTemplate.vue b/src/views/MapTemplate.vue index ad0d425..e568cfc 100644 --- a/src/views/MapTemplate.vue +++ b/src/views/MapTemplate.vue @@ -38,9 +38,9 @@ // // 鍏叡灞曠ず鏁版嵁 // import PublicBounced from '@components/BaseNav/PublicBounced/PublicBounced' import LayerFactory from '@components/LayerController/service/LayerFactory' -import EventHandler from '../components/LayerController/event/EventHandler' // import ReportPopup from '../components/panel/topicSearch/SewersSelect/EnterpriseEmergency/ReportPopup' import Emergency from '@components/emergency/index' +import MapManager from '../components/helpers/MapManager' export default { name: 'MapTemplate', @@ -102,10 +102,6 @@ // this.AddGasHelper() // this.ChangeWaterState() - - var eventHandler = new EventHandler() - window.eventHandler = eventHandler - var layerFactory = new LayerFactory({ L: window.L, map: this.map @@ -113,6 +109,8 @@ layerFactory.init(this.$store.state.map.serviceLayers.LayerSewersLine) layerFactory.initEvent(this.$store.state.map.serviceLayers.LayerSewersLine) window.layerFactory = layerFactory + window.mapManager = new MapManager() + window.mapManager.mapClickListener() this.saveMapStatus() // this.setMapObj(this.mapObj) // this.setBasemapHelper(this.basemapHelper) diff --git a/src/views/popup/Popup.vue b/src/views/popup/Popup.vue index a3c7836..98ba35b 100644 --- a/src/views/popup/Popup.vue +++ b/src/views/popup/Popup.vue @@ -1,15 +1,15 @@ <template> <div id="popup" class="s-map-popup-panel" style="min-width: 280px;max-width: 280px;padding: 0 10px"> - <el-tabs value="0" type="card"> + <el-tabs type="card" :value="0"> <el-tab-pane - :key="item.name" + :key="index" v-for="(item,index) in datas" :label="item.title" - :name="index" + :name="index.toString()" > - <el-row v-for="(v,k) in filter(item.content)" :key="k"> - <el-col :span="12"><B>{{k}}锛�</B></el-col> - <el-col :span="12">{{v}}</el-col> + <el-row v-for="(item,key) in item.content" :key="key"> + <el-col :span="12"><B>{{key}}锛�</B></el-col> + <el-col :span="12">{{item}}</el-col> </el-row> </el-tab-pane> </el-tabs> @@ -18,7 +18,6 @@ <script> // import '@/assets/css/map/map-popup.scss' -import { props } from '../../conf/Constants' export default { name: 'Popup', @@ -28,8 +27,7 @@ tabsValue: '', tabIndex: 2, isShow: false, - properties: {}, - props: props + properties: {} } }, computed: { @@ -45,11 +43,6 @@ // console.log(obj) return obj }, - setDatas (layer) { - console.log(layer) - this.datas = layer - this.tabsValue = layer[0].name - }, setShow () { // this.style.display='auto' this.isShow = true @@ -61,7 +54,6 @@ }, watch: { datas (newVal) { - console.log(newVal) if (newVal != null) { this.tabsValue = newVal[0].name } -- Gitblit v1.8.0