From 9567f017a3423bafafaf5f22ec1e5541d2b0f4bd Mon Sep 17 00:00:00 2001
From: wangjuncheng <1>
Date: 星期一, 28 四月 2025 16:24:15 +0800
Subject: [PATCH] change

---
 src/utils/water.js |  178 +++++++++++++++++++++++++++--------------------------------
 1 files changed, 81 insertions(+), 97 deletions(-)

diff --git a/src/utils/water.js b/src/utils/water.js
index a130c77..7acbb37 100644
--- a/src/utils/water.js
+++ b/src/utils/water.js
@@ -1,110 +1,39 @@
 import { cartesianToXY } from "@/utils/map";
+
 let water = null;
+
+/**
+ * 閿�姣佹按浣撴ā鎷熷眰
+ */
 export function destoryWaterPrimitive() {
   if (water) {
     water.destroy();
     water = null;
+    console.log("Water simulation destroyed.");
   }
 }
-// export function createWaterPrimitive(rainfall) {
-//   if (water) {
-//     water.rainfall = rainfall;
-//     return;
-//   }
-// //   let positionArray = [
-// //     {
-// //       x: -2172418.4199554003,
-// //       y: 4339741.174232391,
-// //       z: 4124707.9687457774,
-// //     },
-// //     {
-// //       x: -2173054.1197314346,
-// //       y: 4339420.091643301,
-// //       z: 4124710.896091218,
-// //     },
-// //     {
-// //       x: -2172832.10576698,
-// //       y: 4338665.615224519,
-// //       z: 4125615.341361447,
-// //     },
-// //     {
-// //       x: -2171464.714295606,
-// //       y: 4337884.628113293,
-// //       z: 4127145.919793182,
-// //     },
-// //     {
-// //       x: -2170738.824348358,
-// //       y: 4338621.865525843,
-// //       z: 4126755.442367371,
-// //     },
-// //     {
-// //       x: -2171270.181257778,
-// //       y: 4338967.11477535,
-// //       z: 4126117.1692552743,
-// //     },
-// //     {
-// //       x: -2171120.444962885,
-// //       y: 4339310.237335228,
-// //       z: 4125837.0031219805,
-// //     },
-// //     {
-// //       x: -2171911.8873938583,
-// //       y: 4339707.853907823,
-// //       z: 4125007.7462886167,
-// //     },
-// //     {
-// //       x: -2171934.494218292,
-// //       y: 4339685.285760623,
-// //       z: 4125019.506657141,
-// //     },
-// //   ];
-// //   const coordinates = [];
-// //   positionArray.forEach((item) => {
-// //     const result = cartesianToXY(item);
-// //     coordinates.push(result.longitude, result.latitude, result.height);
-// //   });
-//   // water = earthCtrl.analysis.createWaterSimulateGPU({
-//   // 	//isDraw: true, // 鏄惁缁樺埗姘撮潰
-//   // 	height: -5,
-//   // 	maxHeight: 2000,
-//   // 	coordinates: coordinates,
-//   // 	// coordinates: [
-//   // 	// 	116.57628914253382, 40.5654461866556, 0, 116.57628914253382, 40.552898897029046, 0,
-//   // 	// 	116.60855621443835, 40.552898897029046, 0, 116.60855621443835, 40.5654461866556, 0,
-//   // 	// ],
-//   // 	// coordinates: [
-//   // 	// 	116.568865, 40.590729, 0, 116.568865, 40.533505, 0,
-//   // 	// 	116.608505, 40.533505, 0, 116.608505, 40.590729, 0,
-//   // 	// ],
-//   // })
-//   water = earthCtrl.simulate.createWaterSimulateLayer({
-//     // baseUrl: "http://192.168.10.187:81/20250412",
-//     // baseUrl: "http://192.168.56.107:8088/simu/c2h1d", //浠跨湡鏈嶅姟url
-//     baseUrl: "/simu/c2h1dc", //浠跨湡鏈嶅姟url
-//     interval: 125, //涓ゅ抚璇锋眰鐨勬椂闂撮棿闅旓紝鍗曚綅ms
-//     // color: new SmartEarth.Cesium.Color.fromCssColorString('#f4a460'),
-//     //娓呮按鑹�
-//     color: new SmartEarth.Cesium.Color.fromCssColorString("#D4F2E7"),
-//     //娴戞按鑹�
-//     // color: new SmartEarth.Cesium.Color.fromCssColorString('#DEB887'),
-//   });
-//   console.log("water", water);
 
-//   // water.rainfall = 0.0001;    // 璋冭妭闆ㄩ噺
-//   // water.rainPointMax = 2.0;   // 娓楁按闃堝��
-//   // water.attenuation = 0.995;  // 琛板噺
-//   // water.strenght = 0.25    // 姘存祦寮哄害
-// }
+/**
+ * 鍒涘缓姘翠綋妯℃嫙灞�
+ * @param {Object} options - 鍙�夊弬鏁�
+ * @param {number} options.interval - 姘翠綋妯℃嫙鐨勬椂闂撮棿闅旓紙鍗曚綅锛氭绉掞級
+ */
 export function createWaterPrimitive(options = {}) {
-	const { interval = 1000 } = options; // 榛樿 interval 涓� 1000
-  
-	water = earthCtrl.simulate.createWaterSimulateLayer({
-	  baseUrl: "/simu/c2h1dc", // 浠跨湡鏈嶅姟url
-	  interval, // 鍔ㄦ�佽缃� interval
-	  color: new SmartEarth.Cesium.Color.fromCssColorString("#D4F2E7"),
-	});
-	console.log(`Water simulation started with interval: ${interval}ms`);
-  }
+  const { interval = 1000 } = options; // 榛樿 interval 涓� 1000
+
+  water = earthCtrl.simulate.createWaterSimulateLayer({
+    baseUrl: "/simu/c2h1dc", // 浠跨湡鏈嶅姟 URL
+    interval, // 鍔ㄦ�佽缃� interval
+    color: new SmartEarth.Cesium.Color.fromCssColorString("#D4F2E7"),
+    loop: false, // 鏄惁寰幆鎾斁
+    callback: timeCallback, // 鍥炶皟鍑芥暟
+  });
+  console.log(`Water simulation started with interval: ${interval}ms`);
+}
+
+/**
+ * 鍒濆鍖栨按浣撴ā鎷熻鍥�
+ */
 export function initeWaterPrimitiveView() {
   let view = {
     destination: {
@@ -119,5 +48,60 @@
     },
   };
   viewer.scene.camera.flyTo(view);
+  console.log("Camera view initialized for water simulation.");
 }
 
+/**
+ * 鏆傚仠姘翠綋妯℃嫙
+ */
+export function pauseWaterSimulation() {
+  if (water) {
+    water.pause();
+    console.log("Water simulation paused.");
+  } else {
+    console.warn("No water simulation to pause.");
+  }
+}
+
+/**
+ * 鎭㈠姘翠綋妯℃嫙
+ */
+export function resumeWaterSimulation() {
+  if (water) {
+    water.resume();
+    console.log("Water simulation resumed.");
+  } else {
+    console.warn("No water simulation to resume.");
+  }
+}
+
+/**
+ * 璺宠浆鍒版煇涓椂闂寸偣鐨勬按闈㈢姸鎬�
+ */
+export function setTimeForWaterSimulation(closestIndex) {
+  console.log(closestIndex,'index');
+  
+  if (water) {
+    const imageList = water.getTimeList(); // 鑾峰彇鎵�鏈夊彲鐢ㄦ椂闂存埑
+    if (imageList.length === 0) {
+      console.warn("No timestamps available for water simulation.");
+      return;
+    }
+    const idx = Math.floor(Math.random() * imageList.length); // 闅忔満閫夋嫨涓�涓椂闂存埑
+    console.log(
+      `Jumping to timestamp: count:[${imageList.length}], index:[${idx}]`
+    );
+    
+    water.setTime(imageList[closestIndex]); // 璁剧疆鏃堕棿鎴筹紝璺宠浆鍒板搴旀椂鍒�
+  } else {
+    console.warn("No water simulation to set time for.");
+  }
+}
+
+/**
+ * 鏃堕棿鎴冲洖璋冨嚱鏁�
+ * @param {number} timeStamp - 褰撳墠鏃堕棿鎴�
+ */
+function timeCallback(timeStamp) {
+  console.log(`Current timestamp: ${timeStamp}`);
+}
\ No newline at end of file

--
Gitblit v1.9.3