From d4a3ca549f8755c2f87442c27217c3be39cab5cc Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期三, 14 八月 2024 16:00:10 +0800
Subject: [PATCH] 设备维修

---
 src/assets/js/mapSdk/mapServe.js |   83 +++++++++++++++++++++++++++++++++++------
 1 files changed, 70 insertions(+), 13 deletions(-)

diff --git a/src/assets/js/mapSdk/mapServe.js b/src/assets/js/mapSdk/mapServe.js
index 89bd349..cefdd3b 100644
--- a/src/assets/js/mapSdk/mapServe.js
+++ b/src/assets/js/mapSdk/mapServe.js
@@ -1,6 +1,7 @@
 import mapConfig from './mapConfig';
 import { zhangzitou_selectAll } from '@/api/mapView/map.js';
 import WKT from 'terraformer-wkt-parser';
+import store from '@/store';
 // 鏈嶅姟鍔犺浇
 const mapServer = {
     serveType: null,
@@ -39,7 +40,7 @@
                 var geom = WKT.parse(item.geom).coordinates;
                 const terrain = config.terrain;
                 if (terrain.isShow && terrain.isUrl) {
-                    this.addTerrainGLB(geom);
+                    this.addTerrainGLB(item, geom, modelLayer);
                 } else {
                     this.addGLB(item, geom, modelLayer);
                 }
@@ -52,16 +53,33 @@
             });
         });
     },
-    addTerrainGLB(geom) {
+    addTerrainGLB(item, geom, modelLayer) {
         var positions = [Cesium.Cartographic.fromDegrees(geom[0], geom[1])];
         var promise = Cesium.sampleTerrainMostDetailed(Viewer.terrainProvider, positions);
-        promise.then(updatedPositions => {
-            console.log(updatedPositions);
-        })
-        // SmartEarth.Cesium.when(promise, (updatedPositions) => {
-        //     var terrainHeight = updatedPositions[0].height;
-        //     console.log(terrainHeight);
-        // });
+        promise.then((updatedPositions) => {
+            var terrainHeight = updatedPositions[0].height;
+            var style = {
+                longitude: geom[0],
+                latitude: geom[1],
+                altitude: terrainHeight,
+                heading: 0,
+                pitch: 0,
+                roll: 0,
+            };
+            const modelMatrix = mapConfig.getModelMatrix(style);
+            const url = '/glb/' + item.type + '.glb';
+            modelLayer.add(
+                Cesium.Model.fromGltf({
+                    id: item.id,
+                    url: url,
+                    scale: 1,
+                    minimumPixelSize: 20,
+                    maximumScale: 20,
+                    modelMatrix: modelMatrix,
+                    primitive: item,
+                })
+            );
+        });
     },
     addGLB(item, geom, modelLayer) {
         var style = {
@@ -154,7 +172,9 @@
         });
         const cnName = res.cnName + '_' + res.id;
         model.item.readyPromise.then((item) => {
-            mapConfig.userSceneFlyTo(item);
+            if (res.id != 'baseModel') {
+                mapConfig.userSceneFlyTo(item);
+            }
             this.layerList.push({
                 id: res.id,
                 name: cnName,
@@ -163,7 +183,6 @@
             });
         });
     },
-    setTilesetArgs() {},
     removeLayer(res) {
         const cnName = res.cnName + '_' + res.id;
         this.layerList.map((item, index) => {
@@ -181,8 +200,46 @@
             }
         });
     },
-    async getFeatureInfo(res) {
-        console.log(res);
+    async getFeatureInfo(html) {
+        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 str = html
+            .substr(html.indexOf('<td>'), html.lastIndexOf('</td>') - html.indexOf('<td>') + 5)
+            .replaceAll(' ', '')
+            .replaceAll('\n', '')
+            .split('</td>');
+        var arr = [];
+        for (var i in std) {
+            var name, val;
+            name = std[i];
+            val = str[i];
+            if (name == '') {
+                continue;
+            }
+            if (name.indexOf('<th>') > -1) {
+                name = name.replaceAll('<th>', '');
+            }
+            if (val.indexOf('<td>') > -1) {
+                val = val.replaceAll('<td>', '');
+            }
+            if (name != '>') {
+                arr.push({
+                    name: name,
+                    val: val,
+                });
+            }
+        }
+        store.dispatch('mapLayers/changeMapInfo', []);
+        if (arr.length > 0) {
+            // this.$store.geet.mapInfo = arr;
+            store.dispatch('mapLayers/changeMapInfo', arr);
+        }
     },
 };
 export default mapServer;

--
Gitblit v1.9.3