From c065531c87e7dc199c7fc4d35e4f6fbedf26167d Mon Sep 17 00:00:00 2001
From: 徐旺旺 <11530253@qq.com>
Date: 星期三, 19 五月 2021 15:40:37 +0800
Subject: [PATCH] 定位、弹窗信息、排口查询BUG修复
---
src/components/helpers/LocateHelper.js | 113 +++++++++++++++++++++++++++++++-------------------------
1 files changed, 62 insertions(+), 51 deletions(-)
diff --git a/src/components/helpers/LocateHelper.js b/src/components/helpers/LocateHelper.js
index 2454138..edfc65c 100644
--- a/src/components/helpers/LocateHelper.js
+++ b/src/components/helpers/LocateHelper.js
@@ -1,4 +1,4 @@
-import { pulseEffect, reversePolyLine } from '../../utils/utils'
+import { pulseEffect } from '../../utils/utils'
import Popup from '@views/popup/Popup'
import { LAYERPROPS, LAYERS } from '../../conf/Constants'
@@ -9,7 +9,7 @@
*/
export const locate = function (feature, config, filter) {
fitBounds(feature)
- highlight(feature, config)
+ highlight(feature, config.icon)
setTimeout(() => {
const centerPoint = getCenterPoint(feature)
const params = { LAYERS: config.layerGroup || config.typeName, QUERY_LAYERS: config.layerGroup || config.typeName }
@@ -35,36 +35,26 @@
*/
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
+ if (type === 'Point') {
+ var point = feature.geometry.coordinates
+ point = [point[1], point[0]]
+ window.map.setView(point, 17)
+ } else {
+ window.map.fitBounds(window.L.geoJSON(feature).getBounds())
}
}
export const highlight = function (feature, icon) {
+ /* if (Array.isArray(feature)) {
+ for (let i = 0; i < feature.length; i++) {
+ highlight(feature[i], icon)
+ }
+ } else { */
+ window.mapManager.clearHighlight()
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') {
+ if (type === 'Point') {
// 鍙犲姞涓�涓ぇ灏哄鐨勫浘鏍�
let point = feature.geometry.coordinates
point = [point[1], point[0]]
@@ -79,8 +69,14 @@
}).addTo(highlightLayer)
}
pulseEffect(point)
- } else if (type === 'LineString') {
- L.polyline(reversePolyLine(feature), { color: 'red' }).addTo(highlightLayer)
+ } else {
+ L.geoJSON(feature, {
+ style: function () {
+ return {
+ color: 'red'
+ }
+ }
+ }).addTo(highlightLayer)
}
}
@@ -92,7 +88,6 @@
export const openPropsPopup = function (xy, features) {
const lt = window.map.latLngToContainerPoint(xy)
const datas = popupDatas(features)
- console.log(datas)
if (datas.length > 0) {
window.$layer.open({
content: {
@@ -109,32 +104,21 @@
}
export const getCenterPoint = function (feature) {
+ const L = window.L
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
+ var coordinates = feature.geometry.coordinates
+
+ if (type === 'Point') {
+ return [coordinates[1], coordinates[0]]
+ } else {
+ const center = L.geoJSON(feature, {}).getBounds().getCenter()
+ return [center.lat, center.lng]
}
- if (point.length > 2) {
- point.splice(2, 1)
- }
- return point.reverse()
}
const popupDatas = function (features) {
const datas = []
+ console.log(features)
if (features) {
for (var i = 0; i < features.length; i++) {
const feature = features[i]
@@ -147,22 +131,49 @@
if (!propValues) {
continue
}
+ if (id.indexOf('pipesegment') >= 0) {
+ continue
+ }
for (const k in properties) {
if (propValues[k]) {
contents[propValues[k]] = properties[k]
}
}
- datas.push({
+ const data = {
title: LAYERS[ids[0]],
name: feature.id,
- content: contents
- })
+ content: contents,
+ feature: feature
+ }
+ if (id.indexOf('pipeline') >= 0) {
+ data.tableList = listPipeSection(features, properties.subchacode || properties.pipecode)
+ }
+ datas.push(data)
console.log(properties)
}
}
return datas
}
+// 绠$嚎淇℃伅缁戝畾鎵�灞炵娈�
+export const listPipeSection = function (features, code) {
+ const list = []
+ if (features) {
+ for (var i = 0; i < features.length; i++) {
+ const feature = features[i]
+ const id = feature.id
+ if (id.indexOf('pipesegment') < 0) {
+ continue
+ }
+ const properties = feature.properties
+ if (properties.pipecode === code) {
+ list[list.length] = properties
+ }
+ }
+ }
+ return list
+}
+
export const getLayer = function (layerId, id) {
const layer = this.layers[layerId]
--
Gitblit v1.8.0