From cb85033879c74f34925a303402c1ad3e4a8646f2 Mon Sep 17 00:00:00 2001
From: 徐旺旺 <11530253@qq.com>
Date: 星期一, 10 五月 2021 17:03:54 +0800
Subject: [PATCH] 搜索更换为geoserver wfs,图层顺序,弹窗定位等

---
 src/components/LayerController/service/WmsLayerService.js |   99 +++++++++++++++++++++++++++++++------------------
 1 files changed, 62 insertions(+), 37 deletions(-)

diff --git a/src/components/LayerController/service/WmsLayerService.js b/src/components/LayerController/service/WmsLayerService.js
index e102f0c..36aba46 100644
--- a/src/components/LayerController/service/WmsLayerService.js
+++ b/src/components/LayerController/service/WmsLayerService.js
@@ -1,5 +1,7 @@
 import AjaxUtils from '../../../utils/AjaxUtils'
 import { PIPELINE_WMS } from '../../../conf/Constants'
+import Popup from '@views/popup/Popup'
+import List from '../../../utils/List'
 
 /**
  * todo 寰楄�冭檻涓�涓浘灞傞厤缃簡澶氫釜 wmsLayers鐨勬儏鍐�
@@ -26,13 +28,12 @@
     // 瀛樻斁getfeatureinfo鐨勫浘灞傜粍
     this.featureGroup = this.L.featureGroup({}).addTo(this.map)
 
-    this.layers = []
+    this.layers = new List()
     for (var i = 0; i < layersConfig.length; i++) {
       const config = layersConfig[i]
-      for (var k in config) {
-        if (k === 'wmsLayers') {
-          this.layers.push(config[k])
-        }
+      const typeName = config.typeName
+      if (typeName) {
+        this.layers.add(config.index, typeName)
       }
     }
   }
@@ -45,23 +46,18 @@
   }
 
   add (config) {
-    const wmsLayers = config.wmsLayers
-    if (wmsLayers) {
-      if (this.layers.indexOf(wmsLayers) < 0) {
-        this.layers.push(config.wmsLayers)
+    const typeName = config.typeName
+    if (typeName) {
+      if (!this.layers.contains(typeName)) {
+        this.layers.add(config.index, typeName)
         this.wmsLayer.setParams({ layers: this.layers.join(',') })
       }
     }
   }
 
   remove (config) {
-    const wmsLayers = config.wmsLayers
-    for (var i = 0; i < this.layers.length; i++) {
-      const layerName = this.layers[i]
-      if (wmsLayers === layerName) {
-        this.layers.splice(i, 1)
-      }
-    }
+    const typeName = config.typeName
+    this.layers.remove(typeName)
     this.wmsLayer.setParams({ layers: this.layers.join(',') })
   }
 
@@ -69,18 +65,19 @@
     this.wmsLayer = this.L.tileLayer.wms(PIPELINE_WMS, {
       format: 'image/png', // 杩斿洖鐨勬暟鎹牸寮�
       transparent: true,
-      layers: layers.join(',')
+      layers: this.layers.join(',')
     }).addTo(this.map)
   }
 
   clickListener () {
-    if (this.layers && this.layers.length > 0) {
-      window.map.on('click', (e) => {
-        this.featureGroup.clearLayers()
-        var point = this.map.latLngToContainerPoint(e.latlng, this.map.getZoom())
-        var size = this.map.getSize()
-        // const bbox = this.L.latLngBounds(this.L.latLng(e.latlng.lng, e.latlng.lat)).toBBoxString()
+    window.map.on('click', (e) => {
+      console.log(e)
+      this.featureGroup.clearLayers()
+      var point = this.map.latLngToContainerPoint(e.latlng, this.map.getZoom())
+      var size = this.map.getSize()
+      // const bbox = this.L.latLngBounds(this.L.latLng(e.latlng.lng, e.latlng.lat)).toBBoxString()
 
+      if (this.layers.length() > 0) {
         const params = Object.assign({
           LAYERS: this.layers.join(','),
           QUERY_LAYERS: this.layers.join(','),
@@ -93,13 +90,13 @@
         AjaxUtils.get4JsonDataByUrl(PIPELINE_WMS, params, (res) => {
           const features = res.data.features
           /**
-         * {
-         *     title: 'New Tab',
-         *     name: newTabName,
-         *     content: 'New Tab content'
-         * }
-         * @type {*[]}
-         */
+           * {
+           *     title: 'New Tab',
+           *     name: newTabName,
+           *     content: 'New Tab content'
+           * }
+           * @type {*[]}
+           */
           const popupDatas = []
           if (features) {
             for (var i = 0; i < features.length; i++) {
@@ -108,7 +105,7 @@
               this.highlight(feature)
               // const coordinates = feature.geometry.coordinates
               popupDatas.push({
-                title: properties.wellname || properties.devicename || properties.name,
+                title: properties.wellname || properties.devicename || properties.name || properties.pipename,
                 name: feature.id,
                 content: properties
               })
@@ -118,7 +115,7 @@
             var myIcon = this.L.divIcon({ className: 'my-div-icon' })
             this.L.marker(e.latlng, {
               icon: myIcon
-            }).addTo(this.featureGroup)
+            }).addTo(this.featureGroup)/*
               .bindPopup((layer) => {
                 this.popupComp.setDatas(popupDatas)
                 this.popupComp.setShow()
@@ -129,14 +126,30 @@
                 closeButton: false,
                 autoClose: false
               })
-              .openPopup()
+              .openPopup() */
+
+            if (window.layerFactory.clickSwitch) {
+              window.$layer.open({
+                content: {
+                  content: Popup, // 缁勪欢
+                  data: { // 浼犻�掔殑鍙傛暟
+                    datas: popupDatas
+                  }
+                },
+                title: '', // 鏍囬
+                left: e.originalEvent.clientX,
+                top: e.originalEvent.clientY
+              })
+            }
+            // this.popupComp.setDatas(popupDatas)
+            // this.popupComp.setShow()
           }
         })
-      })
-    }
+      }
+    })
   }
 
-  reverse (feature) {
+  reverseMultiLine (feature) {
     const coordinates = feature.geometry.coordinates
     var latlng = []
     for (var j = 0; j < coordinates.length; j++) {
@@ -151,15 +164,27 @@
     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
+  }
+
   highlight (feature) {
     const type = feature.geometry.type
     if (type === 'MultiLineString') {
-      this.L.polyline(this.reverse(feature)).addTo(this.featureGroup)
+      this.L.polyline(this.reverseMultiLine(feature), { color: 'red' }).addTo(this.featureGroup)
     } else if (type === 'Point') {
       var myIcon = this.L.divIcon({ className: 'my-div-icon' })
       this.L.marker(feature.geometry.coordinates.reverse(), {
         icon: myIcon
       }).addTo(this.featureGroup)
+    } else if (type === 'LineString') {
+      this.L.polyline(this.reversePolyLine(feature), { color: 'red' }).addTo(this.featureGroup)
     }
   }
 }

--
Gitblit v1.8.0