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/helpers/LocateHelper.js |  123 +++++++++++++++++++++++++++++++++++++++++
 1 files changed, 123 insertions(+), 0 deletions(-)

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
+}

--
Gitblit v1.8.0