1 files modified
1 files added
| New file |
| | |
| | | import * as Cesium from 'cesium' |
| | | import aircraftGltf from '@/assets/gltf/aircraft.gltf' |
| | | import CreateFrustum from '@/utils/cesium/frustum/CreateFrustum' |
| | | |
| | | export function useTaskViewInfo (viewer, wsInfo, removeEntitys) { |
| | | const newViewer = unref(viewer) |
| | | |
| | | let viewInfoFrustum |
| | | // 设置视椎 |
| | | const setCreateFrustum = (host) => { |
| | | if (!host) return |
| | | viewInfoFrustum?.clear() |
| | | |
| | | const attitude_head = 180 + host.attitude_head |
| | | const gimbal_pitch = 90 - Number(host?.payloads[0]?.gimbal_pitch) || 0 |
| | | |
| | | viewInfoFrustum = new CreateFrustum(newViewer, { |
| | | position: { |
| | | longitude: host.longitude, |
| | | latitude: host.latitude, |
| | | altitude: host.height, |
| | | }, |
| | | width: 30, |
| | | height: 30, |
| | | fov: 20.0, |
| | | near: 3.0, |
| | | far: 250.0, |
| | | roll: gimbal_pitch, |
| | | pitch: 0, |
| | | heading: attitude_head, |
| | | }) |
| | | } |
| | | |
| | | function setAircraftGltf () { |
| | | const host = deviceOsdInfo.value?.data?.host |
| | | const aircraftEntity = newViewer.entities.getById('aircraftGltf') |
| | | const position = Cesium.Cartesian3.fromDegrees(host.longitude, host.latitude, host.height) |
| | | if (aircraftEntity) { |
| | | aircraftEntity.position = new Cesium.ConstantPositionProperty(position) |
| | | return |
| | | } |
| | | |
| | | newViewer.entities.add({ |
| | | id: 'aircraftGltf', |
| | | position, |
| | | model: { |
| | | uri: aircraftGltf, // 或 .glb |
| | | scale: 1.0, // 缩放比例 |
| | | minimumPixelSize: 64, // 最小像素尺寸(保证模型远处可见) |
| | | maximumScale: 128, // 最大缩放(可选) |
| | | }, |
| | | }) |
| | | } |
| | | |
| | | // 视椎加载处理 |
| | | const deviceOsdInfo = computed(() => wsInfo.value?.device_osd) |
| | | |
| | | watch(deviceOsdInfo, () => { |
| | | const host = deviceOsdInfo.value?.data?.host |
| | | |
| | | if ([14, 0].includes(host.mode_code)) { |
| | | mapEntityRemove() |
| | | return |
| | | } |
| | | |
| | | setCreateFrustum(host) |
| | | setAircraftGltf() |
| | | }) |
| | | |
| | | const mapEntityRemove = () => { |
| | | viewInfoFrustum?.clear() |
| | | |
| | | newViewer.entities.removeById('aircraftGltf') |
| | | |
| | | removeEntitys && removeEntitys() |
| | | } |
| | | |
| | | onUnmounted(() => { |
| | | mapEntityRemove() |
| | | }) |
| | | } |
| | |
| | | import { useStore } from 'vuex' |
| | | import { useTaskWayline } from '@/hooks/useTaskWayline/useTaskWayline' |
| | | import { useTaskDetails } from '@/hooks/useTaskDetails/useTaskDetails' |
| | | import { useTaskViewInfo } from '@/hooks/useTaskViewInfo/useTaskViewInfo' |
| | | import { useDroneWS } from '@/hooks/useDroneWS' |
| | | let viewer = null |
| | | |
| | | let { taskDetails, workspace_id, getTaskDetails } = useTaskDetails() |
| | | let { wsInfo, removeWS } = useDroneWS(workspace_id) //ws信息,是一个ref对象 |
| | | |
| | | const store = useStore() |
| | | // 设备任务详情 |
| | |
| | | } |
| | | |
| | | onMounted(async () => { |
| | | viewer = window.$viewer |
| | | |
| | | await getJobList() |
| | | |
| | | // tableList.value = [ |
| | |
| | | } |
| | | }) |
| | | |
| | | useTaskWayline(window.$viewer, taskDetails) |
| | | const { removeEntitys } = useTaskWayline(viewer || window.$viewer, taskDetails) |
| | | |
| | | useTaskViewInfo(viewer || window.$viewer, wsInfo, removeEntitys) |
| | | </script> |
| | | |
| | | <style lang="scss" scoped> |