From 4cabc76013fde2c6f20ef6efb8e0e1e1a94a8f36 Mon Sep 17 00:00:00 2001 From: ChenZeping02609 <chenzeping02609@163.com> Date: 星期四, 13 五月 2021 18:13:04 +0800 Subject: [PATCH] Merge branch 'develop' of http://xearth.cn:6600/r/wuyushui/SewerAndRainNetwork into develop --- src/components/LayerController/service/WmsLayerService.js | 1 src/conf/Constants.js | 8 ++-- src/components/LayerController/service/LayerFactory.js | 66 +++++++++++++++++++++++++++++++- src/components/panel/topicSearch/SewersSearch.vue | 1 4 files changed, 68 insertions(+), 8 deletions(-) diff --git a/src/components/LayerController/service/LayerFactory.js b/src/components/LayerController/service/LayerFactory.js index 7bba481..51fe254 100644 --- a/src/components/LayerController/service/LayerFactory.js +++ b/src/components/LayerController/service/LayerFactory.js @@ -2,6 +2,7 @@ import { clone } from '../../../utils/utils' import { logicMapper, SERVICE_TYPE } from '../../../conf/Constants' import WmsLayerService from './WmsLayerService' +import AnimalService from './AnimalService' /** * init 鍙垵濮嬪寲涓�娆� @@ -18,6 +19,8 @@ this.minZoomLayers = {} this.wmsLayers = [] this.clickSwitch = true // 鍥惧眰鐐瑰嚮寮圭獥寮�鍏� + this.animalService = new AnimalService({ L: this.L }) + this.hightlightLayer = options.L.featureGroup({}).addTo(window.map) } init (layerConfig) { @@ -175,11 +178,12 @@ * @param feature */ flyByFeature (feature, code) { + this.clearHighlight() const type = feature.geometry.type var point = [] switch (type) { case 'Point': - point = clone(feature.geometry.coordinates) + point = feature.geometry.coordinates break case 'MultiLineString': var coordinates = feature.geometry.coordinates @@ -196,14 +200,70 @@ if (point.length > 2) { point.splice(2, 1) } - window.map.setView(point.reverse(), 17) + 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]] + } + this.animalService.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.eachLayer) { + if (layer) { layer.eachLayer(function (layer) { const layers = layer.getLayers() for (var i = 0; i < layers.length; i++) { diff --git a/src/components/LayerController/service/WmsLayerService.js b/src/components/LayerController/service/WmsLayerService.js index 0094a71..a20dad6 100644 --- a/src/components/LayerController/service/WmsLayerService.js +++ b/src/components/LayerController/service/WmsLayerService.js @@ -86,6 +86,7 @@ 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() diff --git a/src/components/panel/topicSearch/SewersSearch.vue b/src/components/panel/topicSearch/SewersSearch.vue index b2f1dde..ad48f87 100644 --- a/src/components/panel/topicSearch/SewersSearch.vue +++ b/src/components/panel/topicSearch/SewersSearch.vue @@ -51,7 +51,6 @@ :page-size=pageSize layout="prev, pager, next" :total=total - :current-page=current class="warnPagination" > </el-pagination> diff --git a/src/conf/Constants.js b/src/conf/Constants.js index 1eb2734..4b29334 100644 --- a/src/conf/Constants.js +++ b/src/conf/Constants.js @@ -1,3 +1,7 @@ +export const WFS_URL = 'http://xearth.cn:6240/geoserver/sewer/ows?service=WFS' +export const PIPELINE_WFS = 'http://xearth.cn:8088/server/ogcserver/PipeLine2/wfs' +export const PIPELINE_WMS = 'http://xearth.cn:6240/geoserver/sewer/wms' + export const GEOM_TYPE = { POINT: 'point', LINE: 'line', @@ -8,10 +12,6 @@ WFS: 'wfs', WMS: 'wms' } - -export const WFS_URL = 'http://xearth.cn:6240/geoserver/sewer/ows?service=WFS' -export const PIPELINE_WFS = 'http://xearth.cn:8088/server/ogcserver/PipeLine2/wfs' -export const PIPELINE_WMS = 'http://xearth.cn:6240/geoserver/sewer/wms' export const logicMapper = { wasteGasPfk: 'WasteGas.js', -- Gitblit v1.8.0