无人机管理后台前端(已迁走)
张含笑
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
@@ -44,6 +47,8 @@
   }
   async function renderPreviewLine (kmzUrl, wayline_type, cb = () => { }, infos = {}) {
      resetCurRouteLineData()
      const { pointPlacemark, polygonList, templateType, startPoint, execute_height_mode, auto_flight_speed } =
@@ -141,14 +146,15 @@
      pointList.shift()
      let dronePosition = {}
      if (JSON.stringify(curRouteLineData.value.infos) != '{}') dronePosition = {
         longitude: curRouteLineData.value.infos[0].longitude,
         latitude: curRouteLineData.value.infos[0].latitude,
         height: curRouteLineData.value.infos[0].height || 0,
      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 = [dronePosition, ...pointList].map(i => Cesium.Cartesian3.fromDegrees(Number(i.longitude), Number(i.latitude), Number(i.height)))
      const routePositions = pointList.map(i => Cesium.Cartesian3.fromDegrees(Number(i.longitude), Number(i.latitude), Number(i.height)))
      previewDataSource.entities.add({
         polyline: {
@@ -159,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({
@@ -188,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 () {
@@ -229,4 +237,4 @@
      removePreviewLine,
      resetCurRouteLineData
   }
}
}