ts/src/views/MultiTrajPlayback/hooks/useMultiSatTraj.js
2025-04-28 09:41:15 +08:00

43 lines
1.3 KiB
JavaScript

import { ref } from 'vue'
import { useSatellite } from '../../Satellite/hooks/satellite'
export function useMultiSatTraj() {
const multiSatTrajMap = new Map()
const satellitePayloadStatusMap = ref(new Map())
const { addSatellite } = useSatellite()
function addSatelliteTraj(satelliteList = [], timeRange) {
satelliteList.forEach(({ id, tle }) => {
if (!multiSatTrajMap.has(id)) {
const satellite = addSatellite(
{ id, tle },
{
startTime: new Date(timeRange[0]).toISOString() || new Date(),
totalSeconds: timeRange[1] - timeRange[0],
}
)
console.log(timeRange[1] - timeRange[0], 'timeRange[1] - timeRange[0]')
satellite.sensor = true
multiSatTrajMap.set(id, satellite)
satellitePayloadStatusMap.value.set(id, satellite.sensor)
}
})
}
function changeSatellitePayloadStatus(id, status) {
multiSatTrajMap.has(id) && (multiSatTrajMap.get(id).sensor = status)
}
function removeAllMultiSatelliteTraj() {
for (let [key, satellite] of multiSatTrajMap.entries()) {
satellite.destroy()
multiSatTrajMap.delete(key)
}
}
return {
addSatelliteTraj,
removeAllMultiSatelliteTraj,
satellitePayloadStatusMap,
changeSatellitePayloadStatus,
}
}