From 4423935d0249d35161efa7f2a095fbfc4b2fd017 Mon Sep 17 00:00:00 2001 From: 徐旺旺 <11530253@qq.com> Date: 星期一, 17 五月 2021 17:15:31 +0800 Subject: [PATCH] 定位、弹窗 --- src/components/helpers/LocateHelper.js | 61 ++++++++++++++++++++++-------- 1 files changed, 45 insertions(+), 16 deletions(-) diff --git a/src/components/helpers/LocateHelper.js b/src/components/helpers/LocateHelper.js index 876e74e..4160b89 100644 --- a/src/components/helpers/LocateHelper.js +++ b/src/components/helpers/LocateHelper.js @@ -1,5 +1,6 @@ import { pulseEffect, reversePolyLine } from '../../utils/utils' - +import Popup from '@views/popup/Popup' +import { LAYERPROPS, LAYERS } from '../../conf/Constants' /** * 鏍规嵁浼犵殑 feature瀵硅薄瀹氫綅锛� * @param code @@ -25,6 +26,7 @@ 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, { @@ -50,29 +52,56 @@ }).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 (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 +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 }) } - return null +} + +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) { -- Gitblit v1.8.0