From 42892b485a2ddebb04c0b96c4b6c420001f699b2 Mon Sep 17 00:00:00 2001
From: jihongshun <1151753686@qq.com>
Date: 星期三, 08 十月 2025 15:10:22 +0800
Subject: [PATCH] 项目修改 &&  航线模拟的动作

---
 src/views/system/flightRouteSimulation/index.vue |  468 ++++++++++++++++++++++++++++++++-------------------------
 1 files changed, 262 insertions(+), 206 deletions(-)

diff --git a/src/views/system/flightRouteSimulation/index.vue b/src/views/system/flightRouteSimulation/index.vue
index a731264..08d2e64 100644
--- a/src/views/system/flightRouteSimulation/index.vue
+++ b/src/views/system/flightRouteSimulation/index.vue
@@ -25,6 +25,7 @@
 import xml2js from 'xml2js'
 import CesiumMap from "../../../utils/components/cesium-map.vue";
 import { getScopeTower} from "@/api/system/template"
+import { watch } from 'vue';
 export default {
   name: "flightRouteSimulation",
   components: {
@@ -126,8 +127,23 @@
       minZoom: 1,//鏈�灏忓彉鍊�
       maxZoom: 56,//鏈�澶у彉鍊�
       baseBoxSize: 576,//榛樿box瀹藉害 
-      // actionArr : new Cesium.SampledProperty(array),//浜戝彴鏈濆悜pitch
+      i:0,//鍔ㄤ綔鐩戝惉i
     }
+  },
+  watch:{
+      i(val,old){
+        let trajectory  =this.trajectoryData[val]
+        if(trajectory) {
+          if(trajectory.nowAction) {
+            this.$notify({
+                title: trajectory.nowAction,
+                position: 'bottom-right',
+                duration:1500,
+                offset:50,
+              })
+          }
+        }
+      }
   },
   mounted() {
   },
@@ -153,20 +169,36 @@
             dealArr.push(this.waypoints[i]); // Push the current element
             const current = this.waypoints[i];
             const next = this.waypoints[i + 1];
+            // dealArr.push({
+            //     "lng": current.lng,
+            //     "lat": current.lat,
+            //     "alt": current.alt,
+            //     'flyHeading':current.flyHeading,
+            //     "heading": current.heading,
+            //     "pitch": current.pitch,
+            //     "roll": current.roll,
+            //     "zoom":current.zoom || 1,
+            //     'wait' : 3,
+            //     // 'wait' : current.waitTime,
+            //     // 'nowAction':ele.value
+            // });
+            //鍔ㄤ綔
+            if(current.nowAction){
+              dealArr.push({
+                  'name':'鍔ㄤ綔鐨勫欢缁�',
+                  "lng": current.lng,
+                  "lat": current.lat,
+                  "alt": current.alt,
+                  'flyHeading':current.flyHeading,
+                  "heading": current.heading,
+                  "pitch": current.pitch,
+                  "roll": current.roll,
+                  "zoom":current.zoom || 1,
+              });
+            }
+            //鍒拌揪鐐瑰悗鏈濆悜闂
             dealArr.push({
-                "lng": current.lng,
-                "lat": current.lat,
-                "alt": current.alt,
-                'flyHeading':current.flyHeading,
-                "heading": current.heading,
-                "pitch": current.pitch,
-                "roll": current.roll,
-                "zoom":current.zoom || 1,
-                'wait' : 3,
-                // 'wait' : current.waitTime,
-                // 'nowAction':ele.value
-            });
-            dealArr.push({
+                'name':'push鐨勬暟鎹�',
                 "lng": next.lng,
                 "lat": next.lat,
                 "alt": next.alt,
@@ -175,49 +207,9 @@
                 "pitch": current.pitch,
                 "roll": current.roll,
                 "zoom":current.zoom || 1,
-                'wait':1
             });
-            
         }
-        // for (let i = 0; i < this.waypoints.length; i++) {
-        //     dealArr.push(this.waypoints[i]); // Push the current element
-        //     const current = this.waypoints[i];
-        //     const next = this.waypoints[i + 1];
-        //     //鎻掑�兼偓鍋�
-        //     this.waypoints[i].nowResult?.forEach((ele)=>{
-        //        dealArr.push({
-        //           "lng": current.lng,
-        //           "lat": current.lat,
-        //           "alt": current.alt,
-        //           'flyHeading':current.flyHeading,
-        //           "heading": current.heading,
-        //           "pitch": current.pitch,
-        //           "roll": current.roll,
-        //           "zoom":current.zoom || 1,
-        //           // 'wait' : current.waitTime,
-        //           'wait' : 1,
-        //           'nowAction':ele.value
-        //       });
-        //     })
-        //     if(next){
-        //       console.log(next)
-        //       //鎻掑�间笅涓�涓偣缁忕含搴�  褰撳墠pt
-        //       dealArr.push({
-        //           "lng": next.lng,
-        //           "lat": next.lat,
-        //           "alt": next.alt,
-        //           'flyHeading':next.flyHeading,
-        //           "heading": current.heading,
-        //           "pitch": current.pitch,
-        //           "roll": current.roll,
-        //           "zoom":current.zoom || 1,
-        //           // 'wait':1
-        //           'wait':0
-        //       });
-        //     }
-        // }
-        // Push the last element without any change
-        // dealArr.push(this.waypoints[this.waypoints.length - 1]);
+        dealArr.push(this.waypoints[this.waypoints.length - 1]);
         this.waypoints = dealArr
         console.log(dealArr)
         this.fileInfo = `
@@ -238,22 +230,17 @@
 
           var date = new Date(isoString);
         }
-        // const startDate = new Date("2025-04-01T13:00:00Z");
         const startDate = new Date(date.toISOString());
         console.log(dealArr)
           let nowTime 
         const result = dealArr.map((item, index) => {
-        // const result = this.waypoints.map((item, index) => {
           // 姣忔鍔犱竴澶�
-          // const time = new Date(startDate.getTime() + index * 60 *1000 + (item.wait ? item.wait :1 ) * 60 * 1000).toISOString();
           if(index == 0) {
              nowTime = startDate.getTime() + 1  *1000
           }else{
-            // nowTime = nowTime + (item.wait ? item.wait :1 )  *1000
             nowTime = nowTime + (item.wait ? item.wait :1 )  *1000
           }
           const time  = new Date(nowTime).toISOString()
-          // const time = Cesium.JulianDate.addSeconds(startDate, 3600, new Cesium.JulianDate());
           return {
             time,
             position: {
@@ -268,7 +255,8 @@
             zoom:item.zoom,
             flyHeading:item.flyHeading,
             nowResult:item.nowResult || [],
-            nowAction:item.nowAction
+            nowAction:item.nowAction,
+            name:item.name
           };
         });
         this.trajectoryData = result
@@ -356,6 +344,134 @@
       return angle
     },
     // 瑙f瀽KMZ鏂囦欢
+    // async parseKMZ(kmzData) {
+
+    //   // 鈿狅笍 杩欓噷鐩存帴浣跨敤鍏ㄥ眬 JSZip 鍜� xml2js锛堥�氳繃CDN寮曞叆锛�
+    //   const zip = await JSZip.loadAsync(kmzData);
+    //   const kmlFile = Object.keys(zip.files).find(name =>
+    //     name.endsWith(".kml")
+    //   );
+    //   // console.log(">> kmlFile:", kmlFile);
+    //   if (!kmlFile) throw new Error("鏈壘鍒癒ML鏂囦欢");
+
+    //   const kmlContent = await zip.file(kmlFile).async("text");
+
+    //   // xml2js 浠� CDN 寮曞叆鍚庢槸 window.xml2js
+    //   const parser = new xml2js.Parser();
+    //   const result = await parser.parseStringPromise(kmlContent);
+    //   // console.log(">> result:", result);
+
+    //   const placemarks =
+    //     result.kml.Document[0].Folder[0].Placemark || [];
+    //   const points = [];
+    //   var  lastZoom =1
+    //   let lastHeading = 0
+    //   for(let i=0;i<placemarks.length;i++){
+    //     const coords = placemarks[i].Point?.[0]?.coordinates?.[0];
+    //     const height = placemarks[i]["wpml:height"]?.[0];
+    //     if(i<placemarks.length-1){
+    //       // console.log(placemarks[i])
+    //       // console.log( placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[0])
+    //       // console.log( placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[1])
+    //       // console.log( placemarks[i+1].Point?.[0]?.coordinates?.[0].split(',')[0])
+    //       // console.log( placemarks[i+1].Point?.[0]?.coordinates?.[0].split(',')[1])
+    //       let lon1 = placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[0]
+    //       let lat1 = placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[1]
+    //       let lon2 = placemarks[i+1].Point?.[0]?.coordinates?.[0].split(',')[0]
+    //       let lat2 = placemarks[i+1].Point?.[0]?.coordinates?.[0].split(',')[1]
+    //       // console.log(this.azimuthtwopoi(lon1,lat1,lon2,lat2))
+    //       // lastHeading =  this.azimuthtwopoi(lon1,lat1,lon2,lat2)
+    //       var nowHeading = this.azimuthtwopoi(lon1,lat1,lon2,lat2)
+    //       if(!nowHeading){
+    //         nowHeading = lastHeading
+    //       }else {
+    //         let p1 = {"lng": lon1, "lat": lat1, "alt": height};
+
+    //         let p2 = {"lng": lon2, "lat": lat2, "alt": height};
+
+    //       let c1 = Cesium.Cartesian3.fromDegrees(p1.lng,p1.lat,p1.height);
+    //       let c2 = Cesium.Cartesian3.fromDegrees(p2.lng,p2.lat,p2.height);
+    //       lastHeading = this.Bearing(c1, c2);
+    //         // lastHeading = this.azimuthtwopoi(lon1,lat1,lon2,lat2)
+    //       }
+       
+    //       // console.log(lastHeading)
+    //       //   console.log('+++++++++++++++++++++++++')
+    //     }
+    //     // 鎻愬彇 aircraftHeading
+    //     // 鎻愬彇 action 閲岀殑鍙傛暟
+    //     // 鍒濆鍖� Pitch, Roll 鍜� Heading
+    //     let totalPitch = 0;
+    //     let totalRoll = 0;
+    //     let totalHeading = 0;
+    //     let flyHeadingData = 0;
+    //     let waitTime = 0;
+    //     let nowResult = []
+    //     if (placemarks[i]["wpml:actionGroup"]?.[0]?.["wpml:action"]) {
+    //       placemarks[i]["wpml:actionGroup"][0]["wpml:action"].forEach(action => {
+    //         // 澶勭悊 gimbalRotate 鍜� rotateYaw 鍑芥暟
+    //         if (action['wpml:actionActuatorFunc'].includes("gimbalRotate")) {
+    //             // 鑾峰彇姣忎釜瑙掑害鍊�
+    //             const gimbalPitch = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:gimbalPitchRotateAngle"][0]);
+    //             const gimbalRoll = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:gimbalRollRotateAngle"][0]);
+    //             const gimbalYaw = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:gimbalYawRotateAngle"][0]);
+    //             if(gimbalYaw < 0 ){   
+    //               gimbalYaw += 360
+    //             }
+    //             // 绱姞 Pitch, Roll 鍜� Heading
+    //             totalPitch += gimbalPitch;
+    //             totalRoll += gimbalRoll;
+    //             // totalHeading += gimbalYaw;
+                
+    //         }
+    //         // 澶勭悊 rotateYaw 鍑芥暟
+    //         if (action['wpml:actionActuatorFunc'].includes("rotateYaw")) {
+    //             // 鑾峰彇 aircraftHeading
+    //             var aircraftHeading = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:aircraftHeading"][0]);
+                
+    //             if(aircraftHeading <0) {
+    //               aircraftHeading+=360
+    //             }
+    //             flyHeadingData = aircraftHeading
+    //             // 灏� aircraftHeading 绱姞鍒� totalHeading
+    //             totalHeading += aircraftHeading;
+    //         }
+            
+    //         // 澶勭悊 rotateYaw 鍑芥暟
+    //         if (action['wpml:actionActuatorFunc'].includes("zoom")) {
+    //           const aircraftZoom = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:focalLength"][0]);
+    //           lastZoom = aircraftZoom
+    //         }
+
+    //         if (action['wpml:actionActuatorFunc'].includes("hover")) {
+    //             // 鑾峰彇 aircraftHeading
+    //             var aircraftHeading = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:hoverTime"][0]);
+    //             // 灏� aircraftHeading 绱姞鍒� totalHeading
+    //             waitTime += aircraftHeading;
+    //         }
+    //         nowResult.push(
+    //           {
+    //             type:action['wpml:actionActuatorFunc'][0],
+    //             value:this.dealDataValue(action)
+    //           }
+    //         )
+    //       });
+    //     }
+    //     const filteredArray = nowResult.filter(item => item.type !== "rotateYaw" && item.type !== "gimbalRotate");
+
+    //     console.log(filteredArray)
+    //     if (coords) {
+    //       coords.trim().split(" ").forEach(coord => {
+    //         const [lng, lat] = coord.split(",").map(Number);
+    //         // points.push({ lng, lat, alt: height,heading:totalHeading ?totalHeading:lastHeading ,pitch:totalPitch || 0,roll:totalRoll|| 0 ,flyHeading:flyHeadingData,zoom :lastZoom});
+    //         points.push({ lng, lat, alt: height,heading:totalHeading ?totalHeading:lastHeading ,pitch:totalPitch || 0,roll:totalRoll|| 0 ,flyHeading:flyHeadingData,zoom :lastZoom,waitTime:waitTime,nowResult:filteredArray});
+    //       });
+    //     }
+    //   }
+    //   console.log(points)
+    //   if (points.length === 0) throw new Error("鏈壘鍒版湁鏁堣埅鐐�");
+    //   return points;
+    // },
     async parseKMZ(kmzData) {
 
       // 鈿狅笍 杩欓噷鐩存帴浣跨敤鍏ㄥ眬 JSZip 鍜� xml2js锛堥�氳繃CDN寮曞叆锛�
@@ -371,22 +487,18 @@
       // xml2js 浠� CDN 寮曞叆鍚庢槸 window.xml2js
       const parser = new xml2js.Parser();
       const result = await parser.parseStringPromise(kmlContent);
-      // console.log(">> result:", result);
+      console.log(">> result:", result);
 
       const placemarks =
         result.kml.Document[0].Folder[0].Placemark || [];
       const points = [];
-      var  lastZoom =1
+      const dealPoints = [];
       let lastHeading = 0
+      var changeZoom = 1
       for(let i=0;i<placemarks.length;i++){
         const coords = placemarks[i].Point?.[0]?.coordinates?.[0];
         const height = placemarks[i]["wpml:height"]?.[0];
         if(i<placemarks.length-1){
-          // console.log(placemarks[i])
-          // console.log( placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[0])
-          // console.log( placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[1])
-          // console.log( placemarks[i+1].Point?.[0]?.coordinates?.[0].split(',')[0])
-          // console.log( placemarks[i+1].Point?.[0]?.coordinates?.[0].split(',')[1])
           let lon1 = placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[0]
           let lat1 = placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[1]
           let lon2 = placemarks[i+1].Point?.[0]?.coordinates?.[0].split(',')[0]
@@ -394,95 +506,84 @@
           // console.log(this.azimuthtwopoi(lon1,lat1,lon2,lat2))
           // lastHeading =  this.azimuthtwopoi(lon1,lat1,lon2,lat2)
           var nowHeading = this.azimuthtwopoi(lon1,lat1,lon2,lat2)
+          console.log(nowHeading)
           if(!nowHeading){
             nowHeading = lastHeading
           }else {
-            let p1 = {"lng": lon1, "lat": lat1, "alt": height};
-
-            let p2 = {"lng": lon2, "lat": lat2, "alt": height};
-
+          let p1 = {"lng": lon1, "lat": lat1, "alt": height};
+          let p2 = {"lng": lon2, "lat": lat2, "alt": height};
           let c1 = Cesium.Cartesian3.fromDegrees(p1.lng,p1.lat,p1.height);
           let c2 = Cesium.Cartesian3.fromDegrees(p2.lng,p2.lat,p2.height);
           lastHeading = this.Bearing(c1, c2);
             // lastHeading = this.azimuthtwopoi(lon1,lat1,lon2,lat2)
           }
        
-          // console.log(lastHeading)
+          console.log(lastHeading)
           //   console.log('+++++++++++++++++++++++++')
         }
         // 鎻愬彇 aircraftHeading
         // 鎻愬彇 action 閲岀殑鍙傛暟
         // 鍒濆鍖� Pitch, Roll 鍜� Heading
-        let totalPitch = 0;
-        let totalRoll = 0;
-        let totalHeading = 0;
-        let flyHeadingData = 0;
-        let waitTime = 0;
-        let nowResult = []
+        let changeHeading = 0;
+        let changePitch = 0;
+        let changeRoll = 0;
+        let changeFlyHeadingData = 0;
+        
         if (placemarks[i]["wpml:actionGroup"]?.[0]?.["wpml:action"]) {
-          placemarks[i]["wpml:actionGroup"][0]["wpml:action"].forEach(action => {
-            // 澶勭悊 gimbalRotate 鍜� rotateYaw 鍑芥暟
-            if (action['wpml:actionActuatorFunc'].includes("gimbalRotate")) {
-                // 鑾峰彇姣忎釜瑙掑害鍊�
-                const gimbalPitch = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:gimbalPitchRotateAngle"][0]);
-                const gimbalRoll = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:gimbalRollRotateAngle"][0]);
-                const gimbalYaw = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:gimbalYawRotateAngle"][0]);
-                if(gimbalYaw < 0 ){   
-                  gimbalYaw += 360
-                }
-                // 绱姞 Pitch, Roll 鍜� Heading
-                totalPitch += gimbalPitch;
-                totalRoll += gimbalRoll;
-                // totalHeading += gimbalYaw;
-                
-            }
-            // 澶勭悊 rotateYaw 鍑芥暟
-            if (action['wpml:actionActuatorFunc'].includes("rotateYaw")) {
-                // 鑾峰彇 aircraftHeading
-                var aircraftHeading = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:aircraftHeading"][0]);
-                
-                if(aircraftHeading <0) {
-                  aircraftHeading+=360
-                }
-                flyHeadingData = aircraftHeading
-                // 灏� aircraftHeading 绱姞鍒� totalHeading
-                totalHeading += aircraftHeading;
-            }
+           for(let j=0;j<placemarks[i]["wpml:actionGroup"][0]["wpml:action"].length;j++){
+          //  console.log(placemarks[i]["wpml:actionGroup"][0]["wpml:action"][j])
+           let groupObj = placemarks[i]["wpml:actionGroup"][0]["wpml:action"][j]
+          //  console.log(groupObj)
+          //鏃犱汉鏈�
+           if(groupObj['wpml:actionActuatorFunc'].includes("rotateYaw")) {
+            changeHeading = parseFloat(groupObj['wpml:actionActuatorFuncParam'][0]["wpml:aircraftHeading"][0])
+            changeFlyHeadingData = parseFloat(groupObj['wpml:actionActuatorFuncParam'][0]["wpml:aircraftHeading"][0])
+           }
+           //浜戝彴
+           if(groupObj['wpml:actionActuatorFunc'].includes("gimbalRotate")) {
+            console.log(groupObj)
+            changePitch  = parseFloat(groupObj['wpml:actionActuatorFuncParam'][0]["wpml:gimbalPitchRotateAngle"][0])
+            changeRoll  = parseFloat(groupObj['wpml:actionActuatorFuncParam'][0]["wpml:gimbalRollRotateAngle"][0])
+           }
+          if(groupObj['wpml:actionActuatorFunc'].includes("zoom")) {
+            console.log(groupObj)
+            changeZoom = parseFloat(groupObj['wpml:actionActuatorFuncParam'][0]["wpml:focalLength"][0])
+           }
+            //  //鎷嶇収
+           if(groupObj['wpml:actionActuatorFunc'].includes("takePhoto")) {
             
-            // 澶勭悊 rotateYaw 鍑芥暟
-            if (action['wpml:actionActuatorFunc'].includes("zoom")) {
-              const aircraftZoom = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:focalLength"][0]);
-              lastZoom = aircraftZoom
-            }
-
-            if (action['wpml:actionActuatorFunc'].includes("hover")) {
-                // 鑾峰彇 aircraftHeading
-                var aircraftHeading = parseFloat(action['wpml:actionActuatorFuncParam'][0]["wpml:hoverTime"][0]);
-                // 灏� aircraftHeading 绱姞鍒� totalHeading
-                waitTime += aircraftHeading;
-            }
-            nowResult.push(
-              {
-                type:action['wpml:actionActuatorFunc'][0],
-                value:this.dealDataValue(action)
-              }
-            )
-          });
-        }
-        const filteredArray = nowResult.filter(item => item.type !== "rotateYaw" && item.type !== "gimbalRotate");
-
-        console.log(filteredArray)
-        if (coords) {
-          coords.trim().split(" ").forEach(coord => {
-            const [lng, lat] = coord.split(",").map(Number);
-            // points.push({ lng, lat, alt: height,heading:totalHeading ?totalHeading:lastHeading ,pitch:totalPitch || 0,roll:totalRoll|| 0 ,flyHeading:flyHeadingData,zoom :lastZoom});
-            points.push({ lng, lat, alt: height,heading:totalHeading ?totalHeading:lastHeading ,pitch:totalPitch || 0,roll:totalRoll|| 0 ,flyHeading:flyHeadingData,zoom :lastZoom,waitTime:waitTime,nowResult:filteredArray});
-          });
+            console.log(groupObj)
+           }
+           dealPoints.push({
+            lng:placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[0], 
+            lat:placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[1], 
+            alt: placemarks[i]["wpml:height"]?.[0],
+            heading:changeHeading < 0 ? changeHeading + 360 :changeHeading ,
+            pitch:changePitch,
+            roll:changeRoll,
+            flyHeading:changeFlyHeadingData,
+            zoom:changeZoom,
+            nowAction:this.dealDataValue(groupObj),
+          })
+          console.log(dealPoints)
+          }
+        }else {
+          dealPoints.push({
+            lng:placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[0], 
+            lat:placemarks[i].Point?.[0]?.coordinates?.[0].split(',')[1], 
+            alt: placemarks[i]["wpml:height"]?.[0],
+            // heading:changeHeading,
+            heading:changeHeading ?changeHeading:lastHeading,
+            pitch:changePitch,
+            roll:changeRoll,
+            flyHeading:changeFlyHeadingData,
+            zoom:changeZoom,
+          })
         }
       }
-      console.log(points)
-      if (points.length === 0) throw new Error("鏈壘鍒版湁鏁堣埅鐐�");
-      return points;
+      console.log(dealPoints)
+      if (dealPoints.length === 0) throw new Error("鏈壘鍒版湁鏁堣埅鐐�");
+      return dealPoints;
     },
     dealDataValue(action){
       switch (action['wpml:actionActuatorFunc'][0]) {
@@ -502,7 +603,6 @@
           return '缁撴潫褰曞儚'
           break;
         default:
-          console.log('Access Denied!');
       }
     },
     // 璁$畻鎬昏窛绂�
@@ -663,6 +763,7 @@
       // 鍒涘缓浣嶇疆鍜岄�熷害灞炴��
       const speedProperty = new Cesium.SampledProperty(Number)
       // 娣诲姞閲囨牱鐐�
+      console.log(this.trajectoryData)
       this.trajectoryData.forEach(data => {
         const time = Cesium.JulianDate.fromIso8601(data.time)
         const position = Cesium.Cartesian3.fromDegrees(
@@ -683,9 +784,9 @@
         // // 娣诲姞椋炴満鏈濆悜閲囨牱
         this.orientation.addSample(time, quaternion);
         this.holderHeadingProperty.addSample(time, data.heading)
+
         this.holderPitchProperty.addSample(time, data.pitch)
         this.holderRollProperty.addSample(time, data.roll)
-
         //鍙樺��
         this.holderZoomProperty.addSample(time,data.zoom)
       })
@@ -762,77 +863,28 @@
         }
       });
     },
-    julianToDate(julianDate, secondsOfDay) {
-      // 1鍎掔暐鏃� = 86400绉掞紝璁$畻鏃堕棿鎴筹紙浠庡叕鍏冨墠4713骞�1鏈�1鏃ヨ捣鐨勭鏁帮級
-      const baseJulianDate = 2440587.5; // UTC 1970-01-01 00:00:00 瀵瑰簲鐨勫剴鐣ユ棩
-      const daysSinceEpoch = julianDate - baseJulianDate;
-
-      // 璁$畻鑷�1970骞�1鏈�1鏃ヤ互鏉ョ殑绉掓暟
-      const epochSeconds = daysSinceEpoch * 86400 + secondsOfDay;
-
-      // 鍒涘缓瀵瑰簲鐨� JavaScript Date 瀵硅薄锛堟绉掔骇鏃堕棿鎴筹級
-      const date = new Date(epochSeconds * 1000); // 灏嗙杞崲涓烘绉�
-      return date;
-    },
 
     getCurrentPosition() {
       let viewer =  window['cesiumContainer'].viewer;
       // 鑾峰彇褰撳墠鏃堕棿
       const currentTime = viewer.clock.currentTime;
-      // console.log(currentTime)
-      // 3. 灏� Julian Date 杞崲涓哄搴旂殑鏃ユ湡瀵硅薄
-      // const julianDateObj = this.julianToDate(currentTime.dayNumber, currentTime.secondsOfDay);
-     
-      // console.log("Julian Date 杞崲鍚庣殑鏃堕棿锛�", julianDateObj.toISOString()); // 杞崲涓� ISO 8601 鏍煎紡
+      // console.log('currentTime' + currentTime)
       const currentTimeISO = Cesium.JulianDate.toIso8601(currentTime,3)
-      this.trajectoryData.forEach((ele)=>{
-        console.log(currentTimeISO)
-        console.log(ele.time)
-        console.log(currentTimeISO.split('.')[0] )
-        console.log(ele.time.split('.')[0])
-        const eventTimeISO = ele.time; 
-        // console.log(new Date(currentTimeISO) -new Date(eventTimeISO))
-        console.log(Math.abs(new Date(eventTimeISO).getTime() - new Date(currentTimeISO).getTime()))
-        // if ((new Date(currentTimeISO) -new Date(eventTimeISO)) < 20) {
-        // if (currentTimeISO.split('.')[0]  == ele.time.split('.')[0])  {
-        //   console.log(ele)
-        //   // this.matchedEvents.push(event);
-        //   // console.log(ele)
-        //   if(ele.nowAction) {
-        //     this.$message({
-        //       message: ele.nowAction,
-        //       type: 'success'
-        //     });
-        //   }
-        // }
-        if(Math.abs(new Date(eventTimeISO).getTime() - new Date(currentTimeISO).getTime()) < 15) {
-          if(ele.nowAction) {
-              this.$message({
-                message: ele.nowAction,
-                type: 'success'
-              });
-            }
-          }
-      })
-
-      // this.trajectoryData.forEach((ele)=>{
-      //   console.log(Cesium.JulianDate.fromIso8601(ele.time))
-
-      //     // console.log( Cesium.JulianDate.fromIso8601(ele.time))
-      //   // if (Math.abs(julianDateObj - new Date(ele.time)) < 20) {  // 鍏佽 1 绉掑唴鐨勮宸�
-      //   //   console.log("Julian Date 鍜� ISO 8601 鏃堕棿鏍煎紡闈炲父鎺ヨ繎");
-      //   //   if(ele.nowAction) {
-      //   //     this.$message({
-      //   //       message: ele.nowAction,
-      //   //       type: 'success'
-      //   //     });
-      //   //   }
-      //   // } else {
-      //   //   console.log("Julian Date 鍜� ISO 8601 鏃堕棿鏍煎紡涓嶅悓");
-      //   // }
-      // })
-      // console.log(currentTime)
-      // console.log(this.trajectoryData)
+      let i=this.trajectoryData?.length-1
+      // console.log('鏃堕棿杞翠簨浠�:' + new Date(currentTimeISO).getTime())
+      // console.log('鏁扮粍涓椂闂�:' +Math.abs(new Date(this.trajectoryData[this.i].time).getTime()))
+      // console.log('鍒嗗壊绾库�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺�斺��')
+      let trajectory=null;
+      while(i>=0){
+         trajectory = this.trajectoryData[i];
+        if(new Date(currentTimeISO).getTime() < Math.abs(new Date(trajectory.time).getTime())){
+        console.log(i)
+        i--;
+        }else{
+          break;
+        }
+      }
+      this.i = i;
       const currentPosition = this.positionProperty.getValue(currentTime);
       // 濡傛灉鑾峰彇鍒颁綅缃�
       if (currentPosition) {
@@ -922,6 +974,9 @@
   bottom: 55px;
   border: 1px solid white;
 }
+.el-notification  {
+  width: 140px !important;  /* 璋冩暣涓烘墍闇�瀹藉害 */
+}
 </style>
 <style scoped>
 .zoom-ui-container {
@@ -958,5 +1013,6 @@
   bottom: 35px;
   left: 340px;
 }
+/* 淇敼閫氱煡妗嗗搴� */
 
 </style>

--
Gitblit v1.9.3