From 16d54a558bfb879ea18d38fdf0586e6de000b7f7 Mon Sep 17 00:00:00 2001 From: xiaosi <2652281683@qq.com> Date: Thu, 27 Aug 2026 12:20:43 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20Tasks=20=E8=88=AA=E7=BA=BF=E5=9C=B0?= =?UTF-8?q?=E5=9B=BE=E7=AD=89=E5=BE=85=20style=20=E5=B0=B1=E7=BB=AA?= =?UTF-8?q?=E5=86=8D=E6=8C=82=E5=9B=BE=E5=B1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/TasksView/TasksView.vue | 37 +++++++++++++++++++++---------- 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/views/TasksView/TasksView.vue b/src/views/TasksView/TasksView.vue index 906f518..5c5112e 100644 --- a/src/views/TasksView/TasksView.vue +++ b/src/views/TasksView/TasksView.vue @@ -262,6 +262,7 @@ const routeMapEl = ref(null) const routeMapReady = ref(false) let routeMapInstance = null let routeMapAttached = false +let pendingStyleHandler = null const routeForm = reactive({ name: '', altitude: 50, speed: 10, turnMode: 'auto' }) const routePoints = ref([]) @@ -609,22 +610,34 @@ async function attachRouteMap() { routeMapAttached = true routeMapReady.value = true - clearTaskLayers(map) - ensureTaskLayers(map) - - map.on('click', onRouteMapClick) - map.on('mousemove', onRouteMapMove) - - const c = map.getCenter() - routeCursor.value = formatCoord(c.lng, c.lat) + const boot = () => { + pendingStyleHandler = null + if (!routeMapAttached || routeMapInstance !== map) return + clearTaskLayers(map) + ensureTaskLayers(map) + map.on('click', onRouteMapClick) + map.on('mousemove', onRouteMapMove) + const c = map.getCenter() + routeCursor.value = formatCoord(c.lng, c.lat) + requestAnimationFrame(() => { + map.resize() + syncRouteLayer() + }) + } - requestAnimationFrame(() => { - map.resize() - syncRouteLayer() - }) + if (map.isStyleLoaded()) { + boot() + } else { + pendingStyleHandler = boot + map.once('load', pendingStyleHandler) + } } function teardownRouteMap() { + if (routeMapInstance && pendingStyleHandler) { + routeMapInstance.off('load', pendingStyleHandler) + pendingStyleHandler = null + } if (routeMapInstance) { routeMapInstance.off('click', onRouteMapClick) routeMapInstance.off('mousemove', onRouteMapMove)