forked from drone/command-center-dashboard

张含笑
2025-04-19 54cca8780ee531afafdaf9a288f3a6f722db1b3d
src/hooks/useTaskWayline/useTaskWayline.js
@@ -2,7 +2,7 @@
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2025-04-19 14:24:34
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2025-04-19 15:23:57
 * @LastEditTime: 2025-04-19 17:21:58
 * @FilePath: \command-center-dashboard\src\hooks\useTaskWayline\useTaskWayline.js
 * @Description: 
 * 
@@ -20,7 +20,7 @@
import { Cartesian3 } from 'cesium'
export function useTaskWayline (viewer, taskDetails) {
  const newViewer = unref(viewer)
  const newViewer = isRef(viewer) ? viewer : ref(viewer)
  // 解析kmz文件
  const parsingFiles = async url => {
@@ -30,7 +30,7 @@
    const waylinesXMLObj = removeTextKey(waylinesXMLJSON.Folder)
    if (!waylinesXMLObj.Placemark.length) return
    const allPoint = waylinesXMLObj.Placemark.map(item => item.Point.coordinates.split(','))
    flyVisual(allPoint, newViewer)
    flyVisual(allPoint, newViewer.value)
    drawWayline(waylinesXMLObj)
  }
@@ -40,7 +40,7 @@
      return Cartesian3.fromDegrees(Number(lon), Number(lat))
    })
    // 起点
    newViewer.entities.add({
    newViewer.value.entities.add({
      id: 'drone-job-wayline-start',
      position: positions[0],
      billboard: {
@@ -51,7 +51,7 @@
    })
    // 终点
    newViewer.entities.add({
    newViewer.value.entities.add({
      id: 'drone-job-wayline-end',
      position: positions[positions.length - 1],
      billboard: {
@@ -63,7 +63,7 @@
    })
    // 路径线
    newViewer.entities.add({
    newViewer.value.entities.add({
      id: 'drone-job-wayline-polyline',
      polyline: {
        width: 4,
@@ -79,17 +79,26 @@
    })
  }
  watch(taskDetails, () => {
    if (taskDetails.value?.way_lines?.length) {
      parsingFiles(taskDetails.value.way_lines[0].url)
    }
  }, { immediate: true })
  watch(
    [
      () => taskDetails.value?.way_lines?.length,
      () => newViewer.value
    ],
    (
      [wayLinesLength, curViewer],
    ) => {
      if (wayLinesLength && wayLinesLength > 0 && curViewer) {
        parsingFiles(taskDetails.value.way_lines[0].url)
      }
    },
    { immediate: true }
  )
  const removeEntitys = () => {
    const entitiesIDs = newViewer?.entities.values.map(i => i.id)
    const entitiesIDs = newViewer.value?.entities.values.map(i => i.id)
    entitiesIDs.forEach(item => {
      item.includes('drone-job-wayline-') && newViewer?.entities.removeById(item)
    Array.isArray(entitiesIDs) && entitiesIDs.forEach(item => {
      item.includes('drone-job-wayline-') && newViewer.value?.entities.removeById(item)
    })
  }