From 30e393df7b1d89c4172a7f4bec6e80e2dc00c373 Mon Sep 17 00:00:00 2001
From: suerprisePlus <15810472099@163.com>
Date: 星期一, 05 八月 2024 10:14:49 +0800
Subject: [PATCH] 语义功能添加

---
 src/assets/js/mapSdk/mapServe.js |   69 ++++++++++++++++++++++------------
 1 files changed, 44 insertions(+), 25 deletions(-)

diff --git a/src/assets/js/mapSdk/mapServe.js b/src/assets/js/mapSdk/mapServe.js
index 541dd94..89bd349 100644
--- a/src/assets/js/mapSdk/mapServe.js
+++ b/src/assets/js/mapSdk/mapServe.js
@@ -33,31 +33,16 @@
             const pois = response.data.result.pois;
             const cnName = res.cnName + '_' + res.id;
             const modelLayer = new Cesium.PrimitiveCollection();
-           modelLayer.name = cnName;
+            modelLayer.name = cnName;
             Viewer.scene.primitives.add(modelLayer);
             pois.map((item) => {
-                var geom = WKT.parse(item.geom);
-                var style = {
-                    longitude: geom.coordinates[0],
-                    latitude: geom.coordinates[1],
-                    altitude: 0,
-                    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,
-                    })
-                );
+                var geom = WKT.parse(item.geom).coordinates;
+                const terrain = config.terrain;
+                if (terrain.isShow && terrain.isUrl) {
+                    this.addTerrainGLB(geom);
+                } else {
+                    this.addGLB(item, geom, modelLayer);
+                }
             });
             this.layerList.push({
                 id: res.id,
@@ -66,6 +51,40 @@
                 serveType: this.serveType,
             });
         });
+    },
+    addTerrainGLB(geom) {
+        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);
+        // });
+    },
+    addGLB(item, geom, modelLayer) {
+        var style = {
+            longitude: geom[0],
+            latitude: geom[1],
+            altitude: 0,
+            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,
+            })
+        );
     },
 
     addTdLayer(res) {
@@ -155,8 +174,8 @@
                 } else if (item.serveType == 'Tileset') {
                     item.layer.deleteObject();
                     this.layerList.splice(index, 1);
-                }else if (item.serveType == 'WFS') {
-                    Viewer.scene.primitives.remove(item.layer)
+                } else if (item.serveType == 'WFS') {
+                    Viewer.scene.primitives.remove(item.layer);
                     this.layerList.splice(index, 1);
                 }
             }

--
Gitblit v1.9.3