+
{
+ if (!multiSatTrajMap.has(id)) {
+ const satellite = addSatellite({ id, tle })
+ console.log(satellite, 'satellite')
+ multiSatTrajMap.set(id, satellite)
+ }
+ })
+}
diff --git a/src/views/MultiTrajPlayback/hooks/useMultiTraj.js b/src/views/MultiTrajPlayback/hooks/useMultiTraj.js
index be5c163ea..d0cd4d56a 100644
--- a/src/views/MultiTrajPlayback/hooks/useMultiTraj.js
+++ b/src/views/MultiTrajPlayback/hooks/useMultiTraj.js
@@ -1,16 +1,16 @@
import { ref } from 'vue'
import { useMultiTrajReq } from './useMultiTrajReq'
+import { useMultiSatTraj } from './useMultiSatTraj'
+const timesMap = ref(new Map())
+const times = ref([])
+
+const customElapsedTime = ref(0)
+const animationSpeed = ref(1)
+// const lastFrameTime = ref(performance.now())
+const isAnimationRunning = ref(false)
+const isPaused = ref(false)
export function useMultiTraj() {
- const timesMap = ref(new Map())
- const times = ref([])
-
- const customElapsedTime = ref(0)
- const animationSpeed = ref(1)
- // const lastFrameTime = ref(performance.now())
- const isAnimationRunning = ref(false)
- const isPaused = ref(false)
-
function play() {
isAnimationRunning.value = true
isPaused.value = false
@@ -53,6 +53,7 @@ export function useMultiTraj() {
}
}
+// 所有树勾选的ids
const checkedAllKeys = ref({
zb: [],
dd: [],
@@ -60,32 +61,84 @@ const checkedAllKeys = ref({
hj: [],
})
-const showMultiHisTrajCom = ref(false)
-
const showMultiHisTrajDrawer = ref(false)
-
+// 显示或隐藏多目标历史轨迹抽屉
function showOrHideMultiHisTrajDrawer() {
showMultiHisTrajDrawer.value = !showMultiHisTrajDrawer.value
}
+const showMultiHisTrajCom = ref(false)
+// 显示或隐藏多目标历史轨迹组件
function showOrHideMultiHisTraj() {
showMultiHisTrajCom.value = !showMultiHisTrajCom.value
+ resetTime()
}
-const { getZBHisTraj } = useMultiTrajReq()
+const { getZBHisTraj, getSatelliteHisTraj } = useMultiTrajReq()
+// 加载多目标历史轨迹
function loadMultiHisTraj(timeRange) {
console.log(timeRange)
const dictFunc = {
zb: getZBHisTraj,
dd: null,
- satellite: null,
+ satellite: getSatelliteHisTraj,
hj: null,
}
- Object.keys(checkedAllKeys.value).forEach(key => {
- checkedAllKeys.value[key].forEach(item => {
- typeof dictFunc[key] === 'function' && dictFunc[key](item, timeRange)
- })
+ const reqList = Object.keys(checkedAllKeys.value).filter(key => {
+ if (
+ typeof dictFunc[key] === 'function' &&
+ checkedAllKeys.value[key].length
+ ) {
+ return dictFunc[key]
+ }
})
+
+ Promise.all(
+ reqList.map(key => {
+ return dictFunc[key]({
+ timeRange,
+ ids: checkedAllKeys.value[key],
+ })
+ })
+ ).then(res => {
+ const data = reqList.reduce((acc, key, index) => {
+ return Object.assign(acc, { [key]: res[index] })
+ }, {})
+ addAllEntity(data)
+ })
+
+ times.value = timeRange
+ // setTimeRange(timeRange)
+}
+
+const { addSatelliteTraj } = useMultiSatTraj()
+// 添加轨迹实体
+function addAllEntity(data) {
+ const { zb, satellite } = data
+ // zb && useMultiSatTraj(satellite)
+ // dd && useMultiSatTraj(dd)
+ // hj && useMultiSatTraj(hj)
+ satellite && addSatelliteTraj(satellite)
+}
+
+function setTimeRange(timeRange) {
+ const [start, stop] = timeRange
+ const startTime = Cesium.JulianDate.fromDate(new Date(start))
+ const stopTime = Cesium.JulianDate.fromDate(new Date(stop))
+
+ viewer.clock.startTime = startTime
+ viewer.clock.stopTime = stopTime
+ viewer.clock.currentTime = startTime
+ viewer.clock.clockRange = Cesium.ClockRange.LOOP_STOP
+ viewer.clock.multiplier = 1
+ viewer.clock.shouldAnimate = false
+}
+
+function resetTime() {
+ const currentTime = Cesium.JulianDate.fromDate(new Date())
+ viewer.clock.currentTime = currentTime
+ viewer.clock.clockRange = Cesium.ClockRange.UNBOUNDED
+ viewer.clock.shouldAnimate = true
}
diff --git a/src/views/MultiTrajPlayback/hooks/useMultiTrajReq.js b/src/views/MultiTrajPlayback/hooks/useMultiTrajReq.js
index 30f2da405..f979dd46a 100644
--- a/src/views/MultiTrajPlayback/hooks/useMultiTrajReq.js
+++ b/src/views/MultiTrajPlayback/hooks/useMultiTrajReq.js
@@ -5,7 +5,7 @@ import { getHangjing } from '../../../api/Hangjing'
import { getDaodanTree } from '../../../api/Daodan'
export function useMultiTrajReq() {
- return { allTreeData, getAllTree, getZBHisTraj }
+ return { allTreeData, getAllTree, getZBHisTraj, getSatelliteHisTraj }
}
const allTreeData = ref([])
@@ -61,10 +61,10 @@ async function getHJTree() {
}
}
-async function getZBHisTraj(id, params) {
- const [timeBegin, timeEnd] = params
+async function getZBHisTraj({ ids, timeRange }) {
+ const [timeBegin, timeEnd] = timeRange
const { code, data } = await getMubiaoHisTraj({
- target_id: id,
+ target_id: ids,
timeBegin,
timeEnd,
})
@@ -74,7 +74,16 @@ async function getZBHisTraj(id, params) {
return []
}
-async function getSatelliteHisTraj(id, params) {
+async function getSatelliteHisTraj({ ids, timeRange }) {
+ return Promise.resolve([
+ {
+ id: 'CALSPHERE 1',
+ name: 'CALSPHERE 1',
+ tle: `CALSPHERE 1
+1 00900U 64063C 25112.58517632 .00001163 00000+0 11864-2 0 9998
+2 00900 90.2148 62.1269 0027145 120.7790 303.4225 13.75994622 13579`,
+ },
+ ])
const { timeBegin, timeEnd } = params
const { code, data } = await getSatellite()
if (code === '200') {
diff --git a/src/views/MultiTrajPlayback/hooks/useMultiZBTraj.js b/src/views/MultiTrajPlayback/hooks/useMultiZBTraj.js
new file mode 100644
index 000000000..0471ecf91
--- /dev/null
+++ b/src/views/MultiTrajPlayback/hooks/useMultiZBTraj.js
@@ -0,0 +1,12 @@
+import { ref } from 'vue'
+export default function useMultiZBTraj() {
+ return {
+ multiZBTrajMap,
+ }
+}
+
+const multiZBTrajMap = new Map()
+
+function addMultiZBTraj(id, traj) {
+ multiZBTrajMap.set(id, traj)
+}
diff --git a/src/views/MultiTrajPlayback/index.jsx b/src/views/MultiTrajPlayback/index.jsx
index f348c6834..de4a047a3 100644
--- a/src/views/MultiTrajPlayback/index.jsx
+++ b/src/views/MultiTrajPlayback/index.jsx
@@ -25,7 +25,7 @@ export default defineComponent({
}
function renderSuffix({ option }) {
return option.data ? (
-
+
(
-
+
+
+
),
}
})
})
+ const canPlay = computed(() => {
+ return Object.values(checkedAllKeys.value).flat().length > 0
+ })
+
function playMultiTraj() {
// TODO: 轨迹回放
+
showOrHideMultiHisTraj()
}
@@ -86,7 +93,9 @@ export default defineComponent({
)}
-
轨迹回放
+
+ 轨迹回放
+
diff --git a/src/views/Satellite/hooks/satellite.ts b/src/views/Satellite/hooks/satellite.ts
index f901dc330..155d8e31a 100644
--- a/src/views/Satellite/hooks/satellite.ts
+++ b/src/views/Satellite/hooks/satellite.ts
@@ -111,6 +111,7 @@ export function useSatellite() {
return {
satelliteList,
+ addSatellite,
checkedKeys,
getSatelliteList,
addSatellites,
@@ -136,13 +137,11 @@ function createSatelliteCommunicationPayload(satId: string) {
?.communicationPayload?.target.forEach((mbId: string) => {
console.log(mbId, 'mbId')
if (mubiaoMap.has(mbId)) {
- const beam = new Beam({
+ const beam = createBeam({
topEntity: satelliteMap.get(satId).entity,
bottomEntity: mubiaoMap.get(mbId),
})
- beam.create()
-
if (!satelliteBeamMap.has(satId)) {
satelliteBeamMap.set(satId, new Map())
}
@@ -153,6 +152,15 @@ function createSatelliteCommunicationPayload(satId: string) {
})
}
+function createBeam({ topEntity, bottomEntity }) {
+ const beam = new Beam({
+ topEntity,
+ bottomEntity,
+ })
+ beam.create()
+ return beam
+}
+
function removeSatelliteCommunicationPayload(satId: string) {
if (!satelliteBeamMap.has(satId)) {
return