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 |  157 ++++++++++++++++++++++++++++++++++------------------
 1 files changed, 103 insertions(+), 54 deletions(-)

diff --git a/src/utils/tools.js b/src/utils/tools.js
index 6604c70..a56a9c7 100644
--- a/src/utils/tools.js
+++ b/src/utils/tools.js
@@ -3,6 +3,7 @@
 // import cameraIconSel from "../assets/images/base/瑙嗛娴嬬偣sel.png"
 import { ElLoading, ElMessage } from "element-plus";
 import RainEffect from './rain'
+import SnowEffect from './snow'
 let layerIsOpen = false;
 const Cesium = SmartEarth.Cesium;
 const colorAll = {
@@ -21,6 +22,10 @@
   slopeArrow: null,
   elevationTool: null,
   rainEffect: null,
+  snowEffect: null, // 鏂板闆晥鏋滃疄渚�
+  regionTerrain: null,
+  polygonPosition: [],
+  PolygonArr: [],
 
   init(earthCtrl) {
     this.earthCtrl = earthCtrl;
@@ -33,7 +38,20 @@
     const b = parseInt(hex.substring(4, 6), 16) / 255;
     return new Cesium.Color(r, g, b, 1.0);
   },
-  // 澶╂皵
+  // 娓呴櫎澶╂皵鐗规晥
+  delRain() {
+    if (this.rainEffect) {
+      this.rainEffect.destroy()
+      this.rainEffect = null
+    }
+  },
+  delSnow() {
+    if (this.snowEffect) {
+      this.snowEffect.destroy();
+      this.snowEffect = null;
+    }
+  },
+  // 闆ㄥぉ妯℃嫙
   toggleRain(option, show) {
     console.log(option, 'option')
     // 鍏堥攢姣佹棫瀹炰緥
@@ -48,76 +66,107 @@
       color: this.hexToColor(option.rainColor)  // 闆ㄧ殑棰滆壊
     })
   },
-  // 鍧″害鍒嗘瀽
-  pdfx(option) {
-    this.elevationTool = new SmartEarth.ElevationTool(earthCtrl)
-    if (option.terrainRender == '1') {
-      this.elevationTool.type = 'slope'
-    } else {
-      this.elevationTool.type = 'none'
+  // 闆ぉ妯℃嫙
+  toggleSnow(option = {}, show = true) {
+    console.log(option, 'option');
+    const defaultOption = {
+      snowSize: 0.02, // 榛樿闆殑澶у皬
+      snowSpeed: 100.0, // 榛樿闆殑閫熷害
+      snowColor: "#ffffff", // 榛樿棰滆壊锛氱櫧鑹�
+    };
+    option = { ...defaultOption, ...option };
+    if (this.snowEffect) {
+      this.snowEffect.destroy();
+      this.snowEffect = null;
     }
-    this.elevationTool.tf = option.contourLines
-    this.elevationTool.setSpacing(option.spacing)
-    this.elevationTool.setWidth(option.lineWidth)
-    this.elevationTool.setContourColor(option.color);
-    this.elevationTool.render();
-    console.log(this.elevationTool, 'eleelelelelelelel')
-  },
-  // 鍧″悜绠ご
-  pxjt(colors, angles) {
-    this.slopeArrow = earthCtrl.factory.createSlopeArrow({});
-    this.slopeArrow.setColorsAndAngles(colors, angles);
+    this.snowEffect = new SnowEffect(earthCtrl.viewer, {
+      snowSize: option.snowSize, // 闆殑澶у皬
+      snowSpeed: option.snowSpeed, // 闆殑閫熷害
+      snowColor: this.hexToColor(option.snowColor), // 闆殑棰滆壊
+    });
 
-    // 鍒涘缓缁樺埗宸ュ叿
-    const drawTool = earthCtrl.shapeTool.createDrawShapeTool((e) => {
+    // 鎺у埗鏄剧ず/闅愯棌
+    if (this.snowEffect) {
+      this.snowEffect.show(show);
+    }
+  },
+  // 鍖哄煙鍒掑垎宸ュ叿
+  hfqy() {
+    this.regionTerrain = earthCtrl.factory.createRegionTerrain({});
+    this.polygonPosition = [];
+
+    const draw = earthCtrl.shapeTool.createDrawShapeTool((e) => {
       const polygonI = [];
-      const polygonPosition = [];
       for (const i of e.result) {
         const ellipsoid = earthCtrl.coreMap.scene.globe.ellipsoid;
         const cartographic = ellipsoid.cartesianToCartographic(i);
-
-        const lon = Cesium.Math.toDegrees(cartographic.longitude);
-        const lat = Cesium.Math.toDegrees(cartographic.latitude); // 绾害
+        const lon = SmartEarth.Cesium.Math.toDegrees(
+          cartographic.longitude
+        ); // 缁忓害
+        const lat = SmartEarth.Cesium.Math.toDegrees(cartographic.latitude); // 绾害
         polygonI.push(lon, lat, 0);
-        polygonPosition.push(lon, lat);
+        this.polygonPosition.push(lon, lat);
       }
-      const PolygonArr = [];
-      PolygonArr.push({
+      this.PolygonArr.push({
         id: earthCtrl.factory.createUUID(),
         polygon: polygonI,
       });
-
-      // 娓呴櫎缁樺埗宸ュ叿
-      drawTool.removeFromMap();
-      // 璁剧疆鍧″害绠ご鐨勪綅缃拰绫诲瀷
-      this.slopeArrow.setPositions(polygonPosition);
-      this.slopeArrow.setSlopeType(1);
-      this.slopeArrow.setRegionEnabled(true);
-      console.log(this.slopeArrow, 'slope')
+      draw.removeFromMap();
+      this.regionTerrain.setPositions(this.polygonPosition);
+      this.regionTerrain.setRegionEnabled(true);
     });
   },
-  // 鍏抽棴鍧″悜绠ご
-  gbpxjt() {
+  // 鍧″害鍒嗘瀽
+  pdfx() {
+    if (this.regionTerrain) {
+      console.log('鍧″害鍒嗘瀽');
+      this.clearPreviousAnalysis(); // 鍏堟竻闄や箣鍓嶇殑鍒嗘瀽
+      this.regionTerrain.setType("slope");
+      this.regionTerrain.update();
+    }
+  },
+
+  // 鍧″悜绠ご
+  pxjt(colors, angles) {
+    if (this.regionTerrain) {
+      this.clearPreviousAnalysis(); // 鍏堟竻闄や箣鍓嶇殑鍒嗘瀽
+      this.regionTerrain.setType("aspect");
+      this.regionTerrain.update();
+    }
+
+    this.slopeArrow = earthCtrl.factory.createSlopeArrow({});
+    this.slopeArrow.setColorsAndAngles(colors, angles);
+    this.slopeArrow.setSlopeType(1);
+  },
+
+  // 绛夐珮绾垮垎鏋�
+  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();
+  },
+
+  // 娓呴櫎涔嬪墠鐨勫垎鏋愶紙鍧″害銆佸潯鍚戙�佺瓑楂樼嚎锛�
+  clearPreviousAnalysis() {
+    if (this.regionTerrain) {
+      this.regionTerrain.setType("");
+      this.regionTerrain.update();
+    }
+
     if (this.slopeArrow) {
       this.slopeArrow.setSlopeType(0);
+      // this.slopeArrow = null;
+    }
+
+    if (this.elevationTool) {
+      this.elevationTool = null;
     }
   },
-
-
-  toggleSnow(weather = "snow", show) {
-    if (show) {
-      earthCtrl.environment.showEffect(weather);
-    } else {
-      let snowValue = {
-        test1: 2,
-        test2: 1.0,
-        test3: 0.5,
-        test4: 0.5,
-      };
-      earthCtrl.environment.disableEffect(weather);
-    }
-  },
-
   // 鏍囩粯
   CreateLabel(pic, show) {
     if (show) {

--
Gitblit v1.9.3