fix: strictly decouple schedules selection from map visuals to keep map clean
This commit is contained in:
@ -37,19 +37,15 @@ const { limpiarMapa: limpiarTodoCentralizado } = useMapState();
|
|||||||
const showETACard = ref(false);
|
const showETACard = ref(false);
|
||||||
|
|
||||||
// Local old tracking states can be removed, but kept for compatibility or Uber flow:
|
// Local old tracking states can be removed, but kept for compatibility or Uber flow:
|
||||||
const markers = ref<any[]>([]);
|
|
||||||
const promoMarkers = ref<any[]>([]);
|
const promoMarkers = ref<any[]>([]);
|
||||||
const userMarker = ref<any>(null);
|
const userMarker = ref<any>(null);
|
||||||
const currentMarkerMode = ref<'dot' | 'pin' | null>(null);
|
|
||||||
const isUpdatingMarkers = ref(false);
|
const isUpdatingMarkers = ref(false);
|
||||||
const unitMarkers = ref<Map<string, google.maps.Marker>>(new Map());
|
const unitMarkers = ref<Map<string, google.maps.Marker>>(new Map());
|
||||||
const unitFetchInterval = ref<any>(null);
|
const unitFetchInterval = ref<any>(null);
|
||||||
const userCoords = ref<{ lat: number; lng: number } | null>(null);
|
const userCoords = ref<{ lat: number; lng: number } | null>(null);
|
||||||
const walkingPolyline = ref<google.maps.Polyline | null>(null);
|
|
||||||
const optimalStopPulse = ref<any>(null);
|
const optimalStopPulse = ref<any>(null);
|
||||||
const showRouteDropdown = ref(false);
|
const showRouteDropdown = ref(false);
|
||||||
const routeCardRef = ref<HTMLElement | null>(null);
|
const routeCardRef = ref<HTMLElement | null>(null);
|
||||||
const mappingSequenceId = ref(0);
|
|
||||||
const wasSelectedFromMap = ref(false);
|
const wasSelectedFromMap = ref(false);
|
||||||
const isInternalSelection = ref(false);
|
const isInternalSelection = ref(false);
|
||||||
|
|
||||||
@ -244,9 +240,12 @@ async function initializeMap() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// If we have a selected route, show its stops
|
// If we have a selected route AND it was from map, show its stops
|
||||||
if (routeStore.selectedRouteId && routeStore.selectedRouteStops.length > 0) {
|
if (routeStore.selectedRouteId && routeStore.selectedRouteStops.length > 0 && wasSelectedFromMap.value) {
|
||||||
updateMapMarkers();
|
updateMapMarkers();
|
||||||
|
} else {
|
||||||
|
// If no route or not from map, ensure it's clean (promos stay though)
|
||||||
|
clearMapMarkers();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show promotions on the map
|
// Show promotions on the map
|
||||||
@ -277,10 +276,14 @@ watch(
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (routeId) {
|
if (routeId) {
|
||||||
// Route stops are automatically loaded when route is selected
|
if (wasSelectedFromMap.value) {
|
||||||
// Si el ID cambió pero no estamos en el flujo de búsqueda (selectRouteAndClose),
|
// Only update map visuals if selection came from the Map search flow
|
||||||
// forzamos el skipZoom para evitar la animación de "encontrando parada".
|
await updateMapMarkers(true);
|
||||||
await updateMapMarkers(true);
|
} else {
|
||||||
|
// If selection came from Schedules or elsewhere, KEEP THE MAP CLEAN
|
||||||
|
console.log('Selection from outside Map - clearing map markings');
|
||||||
|
clearMapMarkers();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
// Clear markers when no route is selected
|
// Clear markers when no route is selected
|
||||||
lastProcessedRouteId.value = null;
|
lastProcessedRouteId.value = null;
|
||||||
|
|||||||
Reference in New Issue
Block a user