From 21b66bda2968cd73b370e826ee1154acdc6e3569 Mon Sep 17 00:00:00 2001
From: wangyawei <1796609990@qq.com>
Date: 星期五, 18 四月 2025 20:28:27 +0800
Subject: [PATCH] 修改雨的效果

---
 src/utils/tools.js |  271 ++++++++++++++++++++++++------------------------------
 1 files changed, 120 insertions(+), 151 deletions(-)

diff --git a/src/utils/tools.js b/src/utils/tools.js
index a56a9c7..733633f 100644
--- a/src/utils/tools.js
+++ b/src/utils/tools.js
@@ -2,8 +2,8 @@
 // import cameraIcon from "../assets/images/base/瑙嗛娴嬬偣.png"
 // import cameraIconSel from "../assets/images/base/瑙嗛娴嬬偣sel.png"
 import { ElLoading, ElMessage } from "element-plus";
-import RainEffect from './rain'
-import SnowEffect from './snow'
+import RainEffect from "./rain";
+import SnowEffect from "./snow";
 let layerIsOpen = false;
 const Cesium = SmartEarth.Cesium;
 const colorAll = {
@@ -32,7 +32,7 @@
     return this;
   },
   hexToColor(hexColor) {
-    const hex = hexColor.replace('#', '');
+    const hex = hexColor.replace("#", "");
     const r = parseInt(hex.substring(0, 2), 16) / 255;
     const g = parseInt(hex.substring(2, 4), 16) / 255;
     const b = parseInt(hex.substring(4, 6), 16) / 255;
@@ -41,8 +41,8 @@
   // 娓呴櫎澶╂皵鐗规晥
   delRain() {
     if (this.rainEffect) {
-      this.rainEffect.destroy()
-      this.rainEffect = null
+      this.rainEffect.destroy();
+      this.rainEffect = null;
     }
   },
   delSnow() {
@@ -53,22 +53,23 @@
   },
   // 闆ㄥぉ妯℃嫙
   toggleRain(option, show) {
-    console.log(option, 'option')
+    console.log(option, "option");
     // 鍏堥攢姣佹棫瀹炰緥
     if (this.rainEffect) {
-      this.rainEffect.destroy()
-      this.rainEffect = null
+      this.rainEffect.destroy();
+      this.rainEffect = null;
     }
     this.rainEffect = new RainEffect(earthCtrl.viewer, {
       tiltAngle: -0.2, //鍊炬枩瑙掑害
       rainSize: option.rainSize, // 闆ㄧ殑澶у皬
       rainSpeed: option.rainSpeed, // 闆ㄧ殑閫熷害
-      color: this.hexToColor(option.rainColor)  // 闆ㄧ殑棰滆壊
-    })
+      rainDensity: option.rainDensity, // 闆ㄧ殑瀵嗗害
+      color: this.hexToColor(option.rainColor), // 闆ㄧ殑棰滆壊
+    });
   },
   // 闆ぉ妯℃嫙
   toggleSnow(option = {}, show = true) {
-    console.log(option, 'option');
+    console.log(option, "option");
     const defaultOption = {
       snowSize: 0.02, // 榛樿闆殑澶у皬
       snowSpeed: 100.0, // 榛樿闆殑閫熷害
@@ -95,14 +96,12 @@
     this.regionTerrain = earthCtrl.factory.createRegionTerrain({});
     this.polygonPosition = [];
 
-    const draw = earthCtrl.shapeTool.createDrawShapeTool((e) => {
+    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 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);
@@ -119,7 +118,7 @@
   // 鍧″害鍒嗘瀽
   pdfx() {
     if (this.regionTerrain) {
-      console.log('鍧″害鍒嗘瀽');
+      console.log("鍧″害鍒嗘瀽");
       this.clearPreviousAnalysis(); // 鍏堟竻闄や箣鍓嶇殑鍒嗘瀽
       this.regionTerrain.setType("slope");
       this.regionTerrain.update();
@@ -172,7 +171,7 @@
     if (show) {
       earthCtrl.factory.createSimpleGraphic(pic, {}, function (entity) {
         console.log(entity, "entity");
-        window.Viewer = earthCtrl.viewer
+        window.Viewer = earthCtrl.viewer;
         //寮�鍚紪杈戝苟鍚敤灞炴�у脊绐�
         earthCtrl.factory.SimpleGraphic.edit(true, {
           editProp: true,
@@ -188,7 +187,7 @@
 
   //  姘村钩娴嬮噺
   spjl() {
-    earthCtrl.measure.horizontalDistance(colorAll, (e) => {
+    earthCtrl.measure.horizontalDistance(colorAll, e => {
       console.log(e);
     }).onEnd = () => {
       console.log("姘村钩娴嬭窛宸插畬鎴�");
@@ -196,15 +195,15 @@
   },
   //鐩寸嚎娴嬮噺
   jl() {
-    earthCtrl.measure.lineDistance(colorAll, (e) => {
-      console.log(e)
+    earthCtrl.measure.lineDistance(colorAll, e => {
+      console.log(e);
     }).onEnd = () => {
       console.log("鐩寸嚎娴嬮噺宸插畬鎴�");
     };
   },
   // 鍨傜洿娴嬮噺
   czgd() {
-    earthCtrl.measure.height(colorAll, (e) => {
+    earthCtrl.measure.height(colorAll, e => {
       console.log(e);
     }).onEnd = () => {
       console.log("鍨傜洿娴嬭窛宸插畬鎴�");
@@ -212,20 +211,22 @@
   },
   //闈㈢Н娴嬮噺
   mjcl() {
-    earthCtrl.measure.surfaceArea({
-      ...colorAll,
-      tin: true, // 鏄惁鏄剧ずtin涓夎缃�
-      onlyTerrain: false // 鏄惁鍙祴閲忕簿缁嗗湴褰�
-    }, (e) => {
-      console.log(e)
-
-    }).onEnd = () => {
-      console.log('闈㈢Н娴嬮噺宸插畬鎴�')
-    }
+    earthCtrl.measure.surfaceArea(
+      {
+        ...colorAll,
+        tin: true, // 鏄惁鏄剧ずtin涓夎缃�
+        onlyTerrain: false, // 鏄惁鍙祴閲忕簿缁嗗湴褰�
+      },
+      e => {
+        console.log(e);
+      }
+    ).onEnd = () => {
+      console.log("闈㈢Н娴嬮噺宸插畬鎴�");
+    };
   },
   // 娓呴櫎娴嬮噺
   clear() {
-    earthCtrl.measure.clearResult()
+    earthCtrl.measure.clearResult();
   },
   syfx(option) {
     this.viewShedTool = earthCtrl.analysis.createViewShed({
@@ -244,7 +245,7 @@
     if (!this.viewShedTool) {
       this.syfx(option);
     }
-    this.viewShedTool.mouseCreate().then((res) => {
+    this.viewShedTool.mouseCreate().then(res => {
       callback(res);
     });
   },
@@ -299,7 +300,7 @@
         polyline: Cesium.Color.fromCssColorString("#ffff0050"),
         polygon: Cesium.Color.fromCssColorString("#ffff0050"),
       },
-      (e) => { }
+      e => {}
     );
   },
   qxcl() {
@@ -309,7 +310,7 @@
         polyline: Cesium.Color.fromCssColorString("#ffff0050"),
         polygon: Cesium.Color.fromCssColorString("#ffff0050"),
       },
-      (e) => { }
+      e => {}
     );
   },
   fwjcl() {
@@ -319,7 +320,7 @@
         polyline: Cesium.Color.fromCssColorString("#ffff0050"),
         polygon: Cesium.Color.fromCssColorString("#ffff0050"),
       },
-      (e) => { }
+      e => {}
     );
   },
   // >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>鍦烘櫙鎴浘<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
@@ -374,14 +375,12 @@
     this.earthCtrl.factory.createSimpleGraphic(
       "polygon",
       { showSize: false, removeEdit: true },
-      (entity) => {
-        let postitions = entity.polygon.hierarchy
-          .getValue()
-          .positions.reduce((obj, cur) => {
-            let lonlat = this.cartesainToDegrees(cur);
-            obj.push([lonlat.lng, lonlat.lat]);
-            return obj;
-          }, []);
+      entity => {
+        let postitions = entity.polygon.hierarchy.getValue().positions.reduce((obj, cur) => {
+          let lonlat = this.cartesainToDegrees(cur);
+          obj.push([lonlat.lng, lonlat.lat]);
+          return obj;
+        }, []);
         //澶氬彉褰㈤棴鐜�
         postitions.push(postitions[0]);
         let gridRadius = 0.05;
@@ -423,7 +422,7 @@
         }
         hexres.features.forEach((item, index) => {
           if (turf.booleanContains(polygon, item)) {
-            let newArr = item.geometry.coordinates[0].map((el) => {
+            let newArr = item.geometry.coordinates[0].map(el => {
               return Cesium.Cartesian3.fromDegrees(el[0], el[1]);
             });
             //缃戞牸闈�
@@ -499,112 +498,87 @@
       this.RestrictTheHeight.removeFromMap();
       this.RestrictTheHeight = null;
     }
-    earthCtrl.factory.createSimpleGraphic(
-      "polygon",
-      { showSize: false },
-      (entity) => {
-        let arr = [];
-        entity.polygon.hierarchy.getValue().positions.forEach((position) => {
-          let cartographic =
-            SmartEarth.Cesium.Cartographic.fromCartesian(position);
-          let lat = SmartEarth.Cesium.Math.toDegrees(cartographic.latitude);
-          let lng = SmartEarth.Cesium.Math.toDegrees(cartographic.longitude);
-          arr.push(lng, lat);
-        });
-        this.earthCtrl.viewer.entities.remove(entity);
-        if (viewer.terrainProvider) {
-          Cesium.sampleTerrainMostDetailed(viewer.terrainProvider, [
-            Cesium.Cartographic.fromDegrees(arr[0], arr[1]),
-          ]).then((updatedPositions) => {
-            this.RestrictTheHeight = earthCtrl.analysis.createRestrictTheHeight(
-              {
-                positions: arr,
-                baseHeight: baseHeigh + updatedPositions[0].height,
-                // color: SmartEarth.Cesium.Color.GREEN.withAlpha(0.5),
-                color:
-                  SmartEarth.Cesium.Color.fromCssColorString(
-                    "#ff1515"
-                  ).withAlpha(0.5),
-              }
-            );
-          });
-        } else {
+    earthCtrl.factory.createSimpleGraphic("polygon", { showSize: false }, entity => {
+      let arr = [];
+      entity.polygon.hierarchy.getValue().positions.forEach(position => {
+        let cartographic = SmartEarth.Cesium.Cartographic.fromCartesian(position);
+        let lat = SmartEarth.Cesium.Math.toDegrees(cartographic.latitude);
+        let lng = SmartEarth.Cesium.Math.toDegrees(cartographic.longitude);
+        arr.push(lng, lat);
+      });
+      this.earthCtrl.viewer.entities.remove(entity);
+      if (viewer.terrainProvider) {
+        Cesium.sampleTerrainMostDetailed(viewer.terrainProvider, [
+          Cesium.Cartographic.fromDegrees(arr[0], arr[1]),
+        ]).then(updatedPositions => {
           this.RestrictTheHeight = earthCtrl.analysis.createRestrictTheHeight({
             positions: arr,
-            baseHeight: baseHeigh,
-            color:
-              SmartEarth.Cesium.Color.fromCssColorString("#ff1515").withAlpha(
-                0.5
-              ),
+            baseHeight: baseHeigh + updatedPositions[0].height,
+            // color: SmartEarth.Cesium.Color.GREEN.withAlpha(0.5),
+            color: SmartEarth.Cesium.Color.fromCssColorString("#ff1515").withAlpha(0.5),
           });
-        }
+        });
+      } else {
+        this.RestrictTheHeight = earthCtrl.analysis.createRestrictTheHeight({
+          positions: arr,
+          baseHeight: baseHeigh,
+          color: SmartEarth.Cesium.Color.fromCssColorString("#ff1515").withAlpha(0.5),
+        });
       }
-    );
+    });
   },
   hcqfxPoint(width) {
-    const pointGraphic = earthCtrl.factory.createSimpleGraphic(
-      "point",
-      {},
-      (entity) => {
-        const position = entity.position.getValue();
-        const { lng, lat } = this.transformCartesianToCoord(position);
-        const pointBuffer = earthCtrl.analysis.createBufferAnalysis({
-          position: [lng, lat],
-          color: SmartEarth.Cesium.Color.YELLOW.withAlpha(0.5),
-          radius: width / 1000,
-        });
-        pointBuffer.initBuffer();
-        this.Buffers.push(pointBuffer);
-      }
-    );
+    const pointGraphic = earthCtrl.factory.createSimpleGraphic("point", {}, entity => {
+      const position = entity.position.getValue();
+      const { lng, lat } = this.transformCartesianToCoord(position);
+      const pointBuffer = earthCtrl.analysis.createBufferAnalysis({
+        position: [lng, lat],
+        color: SmartEarth.Cesium.Color.YELLOW.withAlpha(0.5),
+        radius: width / 1000,
+      });
+      pointBuffer.initBuffer();
+      this.Buffers.push(pointBuffer);
+    });
   },
   hcqfxLine(width) {
-    this.earthCtrl.factory.createSimpleGraphic(
-      "polyline",
-      { showSize: false },
-      (entity) => {
-        const positions = entity.polyline.positions.getValue();
-        let coordinates = [];
-        for (let i = 0; i < positions.length; i++) {
-          const { lng, lat } = this.transformCartesianToCoord(positions[i]);
-          coordinates.push(lng, lat);
-        }
-        const polulineBuffer = earthCtrl.analysis.createBufferAnalysis({
-          position: coordinates,
-          color: SmartEarth.Cesium.Color.YELLOW.withAlpha(0.5),
-          radius: width / 1000,
-        });
-        polulineBuffer.initPolylineBuffer();
-        this.Buffers.push(polulineBuffer);
+    this.earthCtrl.factory.createSimpleGraphic("polyline", { showSize: false }, entity => {
+      const positions = entity.polyline.positions.getValue();
+      let coordinates = [];
+      for (let i = 0; i < positions.length; i++) {
+        const { lng, lat } = this.transformCartesianToCoord(positions[i]);
+        coordinates.push(lng, lat);
       }
-    );
+      const polulineBuffer = earthCtrl.analysis.createBufferAnalysis({
+        position: coordinates,
+        color: SmartEarth.Cesium.Color.YELLOW.withAlpha(0.5),
+        radius: width / 1000,
+      });
+      polulineBuffer.initPolylineBuffer();
+      this.Buffers.push(polulineBuffer);
+    });
   },
   hcqfxPolygon(width) {
-    this.earthCtrl.factory.createSimpleGraphic(
-      "polygon",
-      { showSize: false },
-      (entity) => {
-        let positions = entity.polygon.hierarchy.getValue().positions;
-        let coordinates = [];
-        for (let i = 0; i < positions.length; i++) {
-          const { lng, lat } = this.transformCartesianToCoord(positions[i]);
-          coordinates.push(lng, lat);
-        }
-        const { lng, lat } = this.transformCartesianToCoord(positions[0]);
+    this.earthCtrl.factory.createSimpleGraphic("polygon", { showSize: false }, entity => {
+      let positions = entity.polygon.hierarchy.getValue().positions;
+      let coordinates = [];
+      for (let i = 0; i < positions.length; i++) {
+        const { lng, lat } = this.transformCartesianToCoord(positions[i]);
         coordinates.push(lng, lat);
-        const polygonBuffer = earthCtrl.analysis.createBufferAnalysis({
-          position: coordinates,
-          color: SmartEarth.Cesium.Color.YELLOW.withAlpha(0.5),
-          radius: width / 1000,
-        });
-        polygonBuffer.initPolylineBuffer();
-        this.Buffers.push(polygonBuffer);
       }
-    );
+      const { lng, lat } = this.transformCartesianToCoord(positions[0]);
+      coordinates.push(lng, lat);
+      const polygonBuffer = earthCtrl.analysis.createBufferAnalysis({
+        position: coordinates,
+        color: SmartEarth.Cesium.Color.YELLOW.withAlpha(0.5),
+        radius: width / 1000,
+      });
+      polygonBuffer.initPolylineBuffer();
+      this.Buffers.push(polygonBuffer);
+    });
   },
   // 鍔ㄦ�佽鍩熷垎鏋�
   dtsyfxPoint(callback) {
-    earthCtrl.factory.createSimpleGraphic("point", {}, (entity) => {
+    earthCtrl.factory.createSimpleGraphic("point", {}, entity => {
       let position = entity.position.getValue();
       let coord = this.transformCartesianToCoord(position);
       this.earthCtrl.viewer.entities.remove(entity);
@@ -707,9 +681,9 @@
   polygonArray: [],
   selectedEntity: null, //閫変腑鐨勫疄浣�
   addPointToMap(row) {
-    const filteArr = this.pointsArray.filter((item) => item.type == row.type);
+    const filteArr = this.pointsArray.filter(item => item.type == row.type);
     if (filteArr.length > 0) {
-      filteArr.forEach((item) => {
+      filteArr.forEach(item => {
         item.entity.show = true;
       });
       return;
@@ -750,9 +724,9 @@
     });
   },
   hidePointByType(row) {
-    const filteArr = this.pointsArray.filter((item) => item.type == row.type);
+    const filteArr = this.pointsArray.filter(item => item.type == row.type);
     if (filteArr.length > 0) {
-      filteArr.forEach((item) => {
+      filteArr.forEach(item => {
         item.entity.show = false;
       });
     }
@@ -770,14 +744,14 @@
     callback(poiInfo);
   },
   setSelectedEntity(entity) {
-    this.pointsArray.forEach((item) => {
+    this.pointsArray.forEach(item => {
       if (item.id === entity.id) {
         item.entity.billboard.image = cameraIconSel;
       }
     });
   },
   clearSelectedEntityStyle(entity) {
-    this.pointsArray.forEach((item) => {
+    this.pointsArray.forEach(item => {
       if (item.id === entity.id) {
         item.entity.billboard.image = cameraIcon;
       }
@@ -791,7 +765,7 @@
     }
   },
   createPolygonArea(item) {
-    const findItem = this.polygonArray.find((row) => row.id === item.id);
+    const findItem = this.polygonArray.find(row => row.id === item.id);
     if (findItem) {
       earthCtrl.viewer.flyTo(findItem.polygon);
       return;
@@ -806,9 +780,7 @@
         heightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
       },
     });
-    var polyPositions = curPolygon.polygon.hierarchy.getValue(
-      Cesium.JulianDate.now()
-    ).positions;
+    var polyPositions = curPolygon.polygon.hierarchy.getValue(Cesium.JulianDate.now()).positions;
     var polyCenter = Cesium.BoundingSphere.fromPoints(polyPositions).center; //涓績鐐�
     polyCenter = Cesium.Ellipsoid.WGS84.scaleToGeodeticSurface(polyCenter);
     curPolygon.position = polyCenter;
@@ -840,7 +812,7 @@
     this.polygonArray.push(obj);
   },
   clearPoygon() {
-    this.polygonArray.forEach((item) => {
+    this.polygonArray.forEach(item => {
       earthCtrl.viewer.entities.remove(item.polygon);
       earthCtrl.viewer.entities.remove(item.polyline);
     });
@@ -883,7 +855,7 @@
     if (graphic) {
       graphic.clear();
     }
-    this.Buffers.map((item) => {
+    this.Buffers.map(item => {
       item.removeFromMap();
     });
     this.Buffers = [];
@@ -927,10 +899,7 @@
       GroupID: 0,
       url: SmartEarthRootUrl + "Workers/image/waterNormals.jpg",
     };
-    this.analysisFlood = earthCtrl.analysis.createSubmergence(
-      method,
-      (value) => { }
-    );
+    this.analysisFlood = earthCtrl.analysis.createSubmergence(method, value => {});
   },
   clearFlood() {
     this.analysisFlood && this.analysisFlood.endWater();

--
Gitblit v1.9.3