Browse Source

fix: Replay 卸载时取消未触发的地图 load 回调

main
xiaosi 3 weeks ago
parent
commit
72a9b45dec
  1. 14
      src/views/ReplayView/ReplayView.vue

14
src/views/ReplayView/ReplayView.vue

@ -51,7 +51,6 @@ import * as urls from '@/config/urls'
import commonRefs from '@/utils/commonRefs'
import mapHelper from '@/core/mapHelper'
const LAYER_ID = 'replay-traj'
const SOURCE_ID = 'replay-traj'
const LINE_LAYER = 'replay-traj-line'
const POINT_LAYER = 'replay-traj-points'
@ -65,6 +64,7 @@ const points = ref([])
const loaded = ref(false)
let mapInstance = null
let pendingLoadHandler = null
const recordName = computed(() => execution.value?.taskId || '执行记录')
const deviceName = computed(() => execution.value?.droneSn || execution.value?.dockId || '--')
@ -187,11 +187,19 @@ async function setupMap() {
mapInstance = map
mapHelper.toggleMapMode({ is2D: true })
const run = () => drawTrajectory(map, points.value)
if (map.isStyleLoaded()) run()
else map.once('load', run)
if (map.isStyleLoaded()) {
run()
} else {
pendingLoadHandler = run
map.once('load', pendingLoadHandler)
}
}
function teardownMap() {
if (mapInstance && pendingLoadHandler) {
mapInstance.off('load', pendingLoadHandler)
pendingLoadHandler = null
}
clearReplayLayers(mapInstance)
mapInstance = null
commonRefs.clearPendingList('map')

Loading…
Cancel
Save