From 1ff13ceb222d4059252201504cd963df26cafec8 Mon Sep 17 00:00:00 2001
From: Surpriseplus <845948745@qq.com>
Date: 星期三, 23 八月 2023 17:13:43 +0800
Subject: [PATCH] 添加点击矢量图层详细信息展示功能,修改图层管理加载顺序

---
 src/assets/js/Map/server.js |   37 ++++++++++++++++++++++++++++++++++++-
 1 files changed, 36 insertions(+), 1 deletions(-)

diff --git a/src/assets/js/Map/server.js b/src/assets/js/Map/server.js
index 642d15a..65ea768 100644
--- a/src/assets/js/Map/server.js
+++ b/src/assets/js/Map/server.js
@@ -1,7 +1,7 @@
 import { getToken } from "@/utils/auth";
 //閰嶇疆鏂囦欢鍦板潃
 import config from "./config";
-
+import store from "@/store";
 const server = {
   layerList: [],
   addTreeData(treeNode) {
@@ -341,9 +341,16 @@
   //鍔犺浇GeoServer-WMS鏈嶅姟
   setAddGeoWmsLayer(res) {
     var url = this.getLayrUrl(res);
+    var that = this
+    var getFeatureInfoFormat = new SmartEarth.Cesium.GetFeatureInfoFormat("html", null, function (html) {
+      that.getFeatureInfo(html)
+    });
     let layer = new SmartEarth.Cesium.WebMapServiceImageryProvider({
       url: url,
       layers: res.tab,
+      getFeatureInfoParameters: { info_format: 'text/html' },
+      enablePickFeatures: true,
+      getFeatureInfoFormats: [getFeatureInfoFormat],
       parameters: {
         transparent: true,
         format: "image/png",
@@ -357,5 +364,33 @@
     let img_layer = window.Viewer.imageryLayers.addImageryProvider(layer);
     this.layerList.push({ id: res.id, layerData: img_layer, type: "wmts" });
   },
+  getFeatureInfo(html) {
+    store.state.details.showDetails = false;
+    var start = html.indexOf("<caption class=\"featureInfo\">") + "<caption class=\"featureInfo\">".length;
+    var end = html.indexOf("</caption>");
+    var tab = html.substr(start, end - start);
+    var std = html.substr(html.indexOf('<th>'), html.lastIndexOf('</th>') - html.indexOf('<th>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</th>')
+    var gindex = null;
+    for (var i = 0; i < std.length; i++) {
+      if (std[i].indexOf('gid') > -1) {
+        gindex = i;
+        break;
+      }
+    }
+    if (!gindex) return
+    var str = html.substr(html.indexOf('<td>'), html.lastIndexOf('</td>') - html.indexOf('<td>') + 5).replaceAll(' ', '').replaceAll('\n', '').split('</td>')
+    var gid = parseInt(str[gindex].replaceAll(
+      '<td>', ''
+    ))
+    if (gid && tab) {
+
+      store.state.details = {
+        gid: gid,
+        tab: tab,
+        showDetails: true
+      }
+    }
+
+  },
 };
 export default server;

--
Gitblit v1.9.3