From 2d90fa3dc99fced159d0bc76939fd9b88e6aafe1 Mon Sep 17 00:00:00 2001
From: wangyawei <1796609990@qq.com>
Date: 星期五, 18 四月 2025 14:23:28 +0800
Subject: [PATCH] 接入视频流

---
 src/utils/tools.js |  108 +++++++++++++++++++++++++++---------------------------
 1 files changed, 54 insertions(+), 54 deletions(-)

diff --git a/src/utils/tools.js b/src/utils/tools.js
index 6b7c835..a56a9c7 100644
--- a/src/utils/tools.js
+++ b/src/utils/tools.js
@@ -25,6 +25,7 @@
   snowEffect: null, // 鏂板闆晥鏋滃疄渚�
   regionTerrain: null,
   polygonPosition: [],
+  PolygonArr: [],
 
   init(earthCtrl) {
     this.earthCtrl = earthCtrl;
@@ -91,81 +92,80 @@
   },
   // 鍖哄煙鍒掑垎宸ュ叿
   hfqy() {
-    // 鍒濆鍖栧尯鍩熷湴褰�
     this.regionTerrain = earthCtrl.factory.createRegionTerrain({});
     this.polygonPosition = [];
 
-    // 鍒涘缓缁樺埗宸ュ叿
-    const drawTool = earthCtrl.shapeTool.createDrawShapeTool((e) => {
-      try {
-        if (!e || !e.result) {
-          throw new Error('Invalid drawing result');
-        }
-
-        // 杞崲鍧愭爣骞跺瓨鍌�
-        const polygonI = [];
-        for (const point of e.result) {
-          const cartographic = earthCtrl.coreMap.scene.globe.ellipsoid.cartesianToCartographic(point);
-          const lon = Cesium.Math.toDegrees(cartographic.longitude);
-          const lat = Cesium.Math.toDegrees(cartographic.latitude);
-
-          polygonI.push(lon, lat, 0);
-          this.polygonPosition.push(lon, lat);
-        }
-
-        // 璁剧疆鍖哄煙鍦板舰
-        this.regionTerrain.setPositions(this.polygonPosition);
-        this.regionTerrain.setRegionEnabled(true);
-
-        // 娓呴櫎缁樺埗宸ュ叿
-        drawTool.removeFromMap();
-      } catch (error) {
-        console.error('Error during region drawing:', error);
-        drawTool.removeFromMap();
+    const draw = earthCtrl.shapeTool.createDrawShapeTool((e) => {
+      const polygonI = [];
+      for (const i of e.result) {
+        const ellipsoid = earthCtrl.coreMap.scene.globe.ellipsoid;
+        const cartographic = ellipsoid.cartesianToCartographic(i);
+        const lon = SmartEarth.Cesium.Math.toDegrees(
+          cartographic.longitude
+        ); // 缁忓害
+        const lat = SmartEarth.Cesium.Math.toDegrees(cartographic.latitude); // 绾害
+        polygonI.push(lon, lat, 0);
+        this.polygonPosition.push(lon, lat);
       }
+      this.PolygonArr.push({
+        id: earthCtrl.factory.createUUID(),
+        polygon: polygonI,
+      });
+      draw.removeFromMap();
+      this.regionTerrain.setPositions(this.polygonPosition);
+      this.regionTerrain.setRegionEnabled(true);
     });
-
-    return drawTool;
   },
+  // 鍧″害鍒嗘瀽
+  pdfx() {
+    if (this.regionTerrain) {
+      console.log('鍧″害鍒嗘瀽');
+      this.clearPreviousAnalysis(); // 鍏堟竻闄や箣鍓嶇殑鍒嗘瀽
+      this.regionTerrain.setType("slope");
+      this.regionTerrain.update();
+    }
+  },
+
   // 鍧″悜绠ご
   pxjt(colors, angles) {
-    this.hfqy()
+    if (this.regionTerrain) {
+      this.clearPreviousAnalysis(); // 鍏堟竻闄や箣鍓嶇殑鍒嗘瀽
+      this.regionTerrain.setType("aspect");
+      this.regionTerrain.update();
+    }
+
     this.slopeArrow = earthCtrl.factory.createSlopeArrow({});
     this.slopeArrow.setColorsAndAngles(colors, angles);
-    this.regionTerrain.setPositions(this.polygonPosition);
-    this.regionTerrain.setRegionEnabled(true);
     this.slopeArrow.setSlopeType(1);
   },
 
-  // 鍧″害鍒嗘瀽
-  pdfx(option) {
-    this.hfqy()
-    this.elevationTool = new SmartEarth.ElevationTool(earthCtrl)
-    if (option.terrainRender == '1') {
-      this.elevationTool.type = 'slope'
-    } else {
-      this.elevationTool.type = 'none'
-    }
-    this.elevationTool.tf = option.contourLines
-    this.elevationTool.setSpacing(option.spacing)
-    this.elevationTool.setWidth(option.lineWidth)
+  // 绛夐珮绾垮垎鏋�
+  dgxfx(option) {
+    this.clearPreviousAnalysis(); // 鍏堟竻闄や箣鍓嶇殑鍒嗘瀽
+    this.hfqy();
+    this.elevationTool = new SmartEarth.ElevationTool(earthCtrl);
+    this.elevationTool.tf = option.contourLines;
+    this.elevationTool.setSpacing(option.spacing);
+    this.elevationTool.setWidth(option.lineWidth);
     this.elevationTool.setContourColor(option.color);
     this.elevationTool.render();
   },
 
-  // 娓呯悊鎵�鏈夊垎鏋愬伐鍏�
-  cleanupAnalysisTools() {
-    // 鍧″悜绠ご
+  // 娓呴櫎涔嬪墠鐨勫垎鏋愶紙鍧″害銆佸潯鍚戙�佺瓑楂樼嚎锛�
+  clearPreviousAnalysis() {
+    if (this.regionTerrain) {
+      this.regionTerrain.setType("");
+      this.regionTerrain.update();
+    }
+
     if (this.slopeArrow) {
       this.slopeArrow.setSlopeType(0);
-      this.slopeArrow = null;
+      // this.slopeArrow = null;
     }
-    // 閫夋嫨鍖哄煙
-    if (this.regionTerrain) {
-      this.regionTerrain.setRegionEnabled(false);
-      this.regionTerrain = null;
+
+    if (this.elevationTool) {
+      this.elevationTool = null;
     }
-    this.polygonPosition = [];
   },
   // 鏍囩粯
   CreateLabel(pic, show) {

--
Gitblit v1.9.3