fix(map): evitar dibujado residual de marcadores cuando se limpia el mapa rápidamente

This commit is contained in:
2026-02-27 11:25:04 -05:00
parent b90eb83acb
commit bddb8916ba
2 changed files with 13 additions and 0 deletions

View File

@ -3,6 +3,7 @@ import { useMapState } from './useMapState'
import { useDirectionsRoute } from './useDirectionsRoute' import { useDirectionsRoute } from './useDirectionsRoute'
import { useParadaCercana } from './useParadaCercana' import { useParadaCercana } from './useParadaCercana'
import type { BusStop } from '@/types' import type { BusStop } from '@/types'
import { useRouteStore } from '@/stores/route'
export const useFlujoPrincipal = () => { export const useFlujoPrincipal = () => {
const { limpiarMapa, registrarMarker } = useMapState() const { limpiarMapa, registrarMarker } = useMapState()
@ -80,6 +81,12 @@ export const useFlujoPrincipal = () => {
return; return;
} }
const routeStore = useRouteStore()
if (routeStore.selectedRouteId !== _ruta.id) {
console.log('Abortando flujo: el mapa fue limpiado o cambió de ruta.')
return;
}
// ── PASO 5: Dibujar tramo relevante (azul vivo) ─────── // ── PASO 5: Dibujar tramo relevante (azul vivo) ───────
const idx = paradasFormateadas.findIndex(p => p.longitud === paradaCercanaFound.longitude && p.latitud === paradaCercanaFound.latitude) const idx = paradasFormateadas.findIndex(p => p.longitud === paradaCercanaFound.longitude && p.latitud === paradaCercanaFound.latitude)
if (idx !== -1) { if (idx !== -1) {

View File

@ -439,6 +439,12 @@ async function updateMapMarkers() {
// Llamar al procesador de flujo principal, lo cual limpia el mapa y centra. // Llamar al procesador de flujo principal, lo cual limpia el mapa y centra.
await procesarSeleccionDeRuta(selectedRouteObj, stops as BusStop[], map.value); await procesarSeleccionDeRuta(selectedRouteObj, stops as BusStop[], map.value);
// ⛔ ABORTAR SI EL USUARIO LIMPIÓ EL MAPA MIENTRAS DIBUJÁBAMOS
if (routeStore.selectedRouteId !== currentRequestRouteId) {
console.log('Abortando dibujado de paradas (la ruta fue limpiada o cambiada)');
return;
}
// Agregar todos los stops como marcadores 'normales' para que se vean en el mapa // Agregar todos los stops como marcadores 'normales' para que se vean en el mapa
const { paradaCercana } = useParadaCercana(); const { paradaCercana } = useParadaCercana();