jihongshun
5 天以前 bbdf7b9bfb33552c83bc4ddee2c36893fd43781b
动作算法优化 && 两个点增加速度值
已修改1个文件
61 ■■■■ 文件已修改
src/views/system/flightRouteSimulation/index.vue 61 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/system/flightRouteSimulation/index.vue
@@ -128,6 +128,7 @@
      maxZoom: 56,//最大变倍
      baseBoxSize: 576,//默认box宽度 
      i:0,//动作监听i
      autoFlightSpeed:10
    }
  },
  watch:{
@@ -165,7 +166,8 @@
        //加点逻辑 比如向第2-n-1中插入元素  经纬度为当前的  heading pitch roll 下一个的
        const dealArr = [];
        console.log(">> this.waypoints:", this.waypoints);
        for (let i = 0; i < this.waypoints.length - 1; i++) {
        // for (let i = 0; i < this.waypoints.length - 1; i++) {
        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];
@@ -183,6 +185,7 @@
            //     // 'nowAction':ele.value
            // });
            //动作
            if(current.nowAction){
              dealArr.push({
                  'name':'动作的延续',
@@ -194,22 +197,50 @@
                  "pitch": current.pitch,
                  "roll": current.roll,
                  "zoom":current.zoom || 1,
                  'speed':current.speed,
              });
            }
            //最后一个如果带动作处理
            if(next){
              if(current.lng !=next.lng ||  current.lat !=next.lat||  current.alt !=next.alt) {
                // 假设你有两个点的经纬度
                var point1 = Cesium.Cartesian3.fromDegrees(current.lng ,  current.lat ,  current.alt);
                var point2 = Cesium.Cartesian3.fromDegrees(next.lng, next.lat, next.alt);
                // 计算两点之间的地表距离
                var distance = Cesium.Cartesian3.distance(point1, point2);;
              }
              dealArr.push({
                  'name':'push的数据',
                  "lng": next.lng,
                  "lat": next.lat,
                  "alt": next.alt,
                  'flyHeading':current.flyHeading,
                  "heading": current.heading,
                  "pitch": current.pitch,
                  "roll": current.roll,
                  "zoom":current.zoom || 1,
                  'speed':current.speed,
                  'wait':Math.floor(distance/this.autoFlightSpeed)
              });
            }else {
              dealArr.push({
                  'name':'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,
                  'speed':current.speed,
              });
            }
            //到达点后朝向问题
            dealArr.push({
                'name':'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,
            });
        }
        dealArr.push(this.waypoints[this.waypoints.length - 1]);
        // dealArr.push(this.waypoints[this.waypoints.length - 1]);
        this.waypoints = dealArr
        console.log(dealArr)
        this.fileInfo = `
@@ -491,6 +522,9 @@
      const placemarks =
        result.kml.Document[0].Folder[0].Placemark || [];
      const flySpeed =
        result.kml.Document[0].Folder[0]['wpml:autoFlightSpeed'][0] || 10
      this.autoFlightSpeed = Number(flySpeed)
      const points = [];
      const dealPoints = [];
      let lastHeading = 0
@@ -878,7 +912,6 @@
      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;