无人机管理后台前端(已迁走)
张含笑
2025-12-09 5808f76456ca0d40de5074f132b73a5a488e3e13
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,10 +46,12 @@
      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 } =
      const { pointPlacemark, polygonList, templateType, startPoint, execute_height_mode, auto_flight_speed, take_off_security_height } =
         await analysisPointLineKmz(kmzUrl)
      curRouteLineData.value = {
@@ -55,6 +61,8 @@
         execute_height_mode,
         auto_flight_speed,
         wayline_type,
         take_off_security_height,
         infos: infos
      }
      cb(curRouteLineData.value.polygonList.map(item => [Number(item[0]), Number(item[1])]))
@@ -130,8 +138,6 @@
         })
      }
      let pointList = handlePointListForKmz({
         placemark: data,
         startPoint: curRouteLineData.value.startPoint,
@@ -140,6 +146,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 +166,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 +195,15 @@
            height: 50,
         },
      })
      flyVisual(
         pointList.map(i => [Number(i.longitude), Number(i.latitude), Number(i.height)]),
      // 获取航线拆分所有点
      store.commit('setPositionsArr', pointList)
      // 获取安全起飞高度
      store.commit('setSafeHeight', curRouteLineData.value.take_off_security_height)
      flyVisual({
         positionsData:pointList.map(i => [Number(i.longitude), Number(i.latitude), Number(i.height)]),
         viewer,
         20
      )
         multiple: 20
      })
   }
   function removePreviewLine () {
@@ -202,6 +219,7 @@
         execute_height_mode: '',
         auto_flight_speed: '',
         wayline_type: '',
         take_off_security_height: ''
      }
   }
@@ -222,4 +240,4 @@
      removePreviewLine,
      resetCurRouteLineData
   }
}
}