diff --git a/src/views/ReplayView/ReplayView.vue b/src/views/ReplayView/ReplayView.vue index e208d9d..1ac9b02 100644 --- a/src/views/ReplayView/ReplayView.vue +++ b/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')