Browse Source

fix: Tasks 航线地图等待 style 就绪再挂图层

main
xiaosi 3 weeks ago
parent
commit
16d54a558b
  1. 37
      src/views/TasksView/TasksView.vue

37
src/views/TasksView/TasksView.vue

@ -262,6 +262,7 @@ const routeMapEl = ref(null)
const routeMapReady = ref(false) const routeMapReady = ref(false)
let routeMapInstance = null let routeMapInstance = null
let routeMapAttached = false let routeMapAttached = false
let pendingStyleHandler = null
const routeForm = reactive({ name: '', altitude: 50, speed: 10, turnMode: 'auto' }) const routeForm = reactive({ name: '', altitude: 50, speed: 10, turnMode: 'auto' })
const routePoints = ref([]) const routePoints = ref([])
@ -609,22 +610,34 @@ async function attachRouteMap() {
routeMapAttached = true routeMapAttached = true
routeMapReady.value = 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() { function teardownRouteMap() {
if (routeMapInstance && pendingStyleHandler) {
routeMapInstance.off('load', pendingStyleHandler)
pendingStyleHandler = null
}
if (routeMapInstance) { if (routeMapInstance) {
routeMapInstance.off('click', onRouteMapClick) routeMapInstance.off('click', onRouteMapClick)
routeMapInstance.off('mousemove', onRouteMapMove) routeMapInstance.off('mousemove', onRouteMapMove)

Loading…
Cancel
Save