| | |
| | | import { pulseEffect, reversePolyLine } from '../../utils/utils' |
| | | |
| | | import Popup from '@views/popup/Popup' |
| | | import { LAYERPROPS, LAYERS } from '../../conf/Constants' |
| | | /** |
| | | * 根据传的 feature对象定位, |
| | | * @param code |
| | |
| | | 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, { |
| | |
| | | }).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) { |