| | |
| | | * @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: |
| | | * |
| | |
| | | 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 => { |
| | |
| | | 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) |
| | | } |
| | | |
| | |
| | | return Cartesian3.fromDegrees(Number(lon), Number(lat)) |
| | | }) |
| | | // 起点 |
| | | newViewer.entities.add({ |
| | | newViewer.value.entities.add({ |
| | | id: 'drone-job-wayline-start', |
| | | position: positions[0], |
| | | billboard: { |
| | |
| | | }) |
| | | |
| | | // 终点 |
| | | newViewer.entities.add({ |
| | | newViewer.value.entities.add({ |
| | | id: 'drone-job-wayline-end', |
| | | position: positions[positions.length - 1], |
| | | billboard: { |
| | |
| | | }) |
| | | |
| | | // 路径线 |
| | | newViewer.entities.add({ |
| | | newViewer.value.entities.add({ |
| | | id: 'drone-job-wayline-polyline', |
| | | polyline: { |
| | | width: 4, |
| | |
| | | }) |
| | | } |
| | | |
| | | 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) |
| | | }) |
| | | } |
| | | |