无人机管理后台前端(已迁走)
张含笑
2025-10-25 39abebc6d54083556a393441e0628bc3d93b46c7
src/hooks/useRouteLine/useRouteLine.js
@@ -13,6 +13,8 @@
import { ArrowLineMaterialProperty } from '@/utils/cesium/Material'
import { flyVisual } from '@/utils/cesium/mapUtil'
import { useStore } from 'vuex'
let arrowLineMaterialProperty = new ArrowLineMaterialProperty({
   color: new Cesium.Color(128 / 255, 215 / 255, 255 / 255, 1),
   directionColor: new Cesium.Color(1, 1, 1, 1),
@@ -22,6 +24,7 @@
})
export function useRouteLine () {
   const store = useStore()
   let viewer = null
   let previewDataSource = null
@@ -33,6 +36,7 @@
      execute_height_mode: '',
      auto_flight_speed: '',
      wayline_type: '',
      infos: {}
   })
   const routeLineListClick = async data => {
@@ -42,7 +46,9 @@
      await renderRouteLine(data.data)
   }
   async function renderPreviewLine (kmzUrl, wayline_type, cb = () => { }) {
   async function renderPreviewLine (kmzUrl, wayline_type, cb = () => { }, infos = {}) {
      resetCurRouteLineData()
      const { pointPlacemark, polygonList, templateType, startPoint, execute_height_mode, auto_flight_speed } =
@@ -55,6 +61,7 @@
         execute_height_mode,
         auto_flight_speed,
         wayline_type,
         infos: infos
      }
      cb(curRouteLineData.value.polygonList.map(item => [Number(item[0]), Number(item[1])]))
@@ -130,8 +137,6 @@
         })
      }
      let pointList = handlePointListForKmz({
         placemark: data,
         startPoint: curRouteLineData.value.startPoint,
@@ -140,6 +145,14 @@
      })
      pointList.shift()
      if (JSON.stringify(curRouteLineData.value.infos) != '{}') {
         pointList.unshift({
            longitude: curRouteLineData.value.infos[0].longitude,
            latitude: curRouteLineData.value.infos[0].latitude,
            height: curRouteLineData.value.infos[0].height || 0,
         })
      }
      const routePositions = pointList.map(i => Cesium.Cartesian3.fromDegrees(Number(i.longitude), Number(i.latitude), Number(i.height)))
@@ -152,15 +165,15 @@
         },
      })
         // 落点线
         ; (pointList || [])?.forEach((item, index) => {
            const topPosition = Cesium.Cartesian3.fromDegrees(Number(item.longitude), Number(item.latitude), Number(item.height))
            let setting = {
               position: topPosition,
               polyline: getPolyLine(viewer, { value: pointList }, index),
            }
            previewDataSource.entities.add(setting)
         })
      // 落点线
      ; (pointList || [])?.forEach((item, index) => {
         const topPosition = Cesium.Cartesian3.fromDegrees(Number(item.longitude), Number(item.latitude), Number(item.height))
         let setting = {
            position: topPosition,
            polyline: getPolyLine(viewer, { value: pointList }, index),
         }
         previewDataSource.entities.add(setting)
      })
      // 终点
      previewDataSource.entities.add({
@@ -181,12 +194,14 @@
            height: 50,
         },
      })
      flyVisual(
         pointList.map(i => [Number(i.longitude), Number(i.latitude), Number(i.height)]),
      // 获取最后一点高度
      console.log(pointList, '查看数组最后一点高度')
      store.commit('setLastHeight', Number(pointList[pointList.length - 1].height))
      flyVisual({
         positionsData:pointList.map(i => [Number(i.longitude), Number(i.latitude), Number(i.height)]),
         viewer,
         20
      )
         multiple: 20
      })
   }
   function removePreviewLine () {
@@ -222,4 +237,4 @@
      removePreviewLine,
      resetCurRouteLineData
   }
}
}