import { cartesianToXY } from "@/utils/map"; let water = null; /** * 销毁水体模拟层 */ export function destoryWaterPrimitive() { if (water) { water.destroy(); water = null; console.log("Water simulation destroyed."); } } /** * 创建水体模拟层 * @param {Object} options - 可选参数 * @param {number} options.interval - 水体模拟的时间间隔(单位:毫秒) */ export function createWaterPrimitive(options = {}) { const { baseUrl = "/simu/c2h1dc", interval = 1000 } = options; // 默认 baseUrl 和 interval water = earthCtrl.simulate.createWaterSimulateLayer({ baseUrl, // 仿真服务 URL interval, // 动态设置 interval color: new SmartEarth.Cesium.Color.fromCssColorString("#D4F2E7"), loop: false, // 是否循环播放 callback: timeCallback, // 回调函数 }); console.log(`Water simulation started with baseUrl: ${baseUrl}, interval: ${interval}ms`); } /** * 初始化水体模拟视图 */ export function initeWaterPrimitiveView() { let view = { destination: { x: -2173603.2294639186, y: 4338938.333124211, z: 4128027.401463165, }, orientation: { pitch: -0.6208443477400212, roll: 0.000049799989940702005, heading: 3.6294612473618644, }, }; 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}`); }