@@ -12,7 +12,7 @@ const { query, category, autocompleteLocations, autocompleteGeo, autocompleteGeo
1212const { initialCenter, initialZoom, initialBearing, initialPitch, isInitialized, initializeView, viewCenter, setMapInstance, mapInstance, flyTo } = useMapControls ()
1313useMapUrl ()
1414const { setSearchResults, setSelectedLocation, initializeLayers, updateUserLocation } = useMapIcons ()
15- const { showUserLocation, userLocationPoint, userLocationAccuracy, isGeoReady } = useUserLocation ()
15+ const { showUserLocation, userLocationPoint, userLocationAccuracy, isGeoReady, initialPoint, initialAccuracy, hasQueryParams } = useUserLocation ()
1616const { width : windowWidth, height : windowHeight } = useWindowSize ()
1717
1818// Inline composable for map interaction handlers
@@ -77,13 +77,18 @@ function useMapInteractions(options: {
7777}
7878
7979const logger = consola .withTag (' map' )
80- // Initialize map view with accuracy-based zoom once IP geolocation resolves
81- watch ([ isGeoReady , windowWidth ] , () => {
82- if (! isInitialized .value && isGeoReady . value && windowWidth . value > 0 ) {
80+ // Initialize map immediately; don't block on GeoIP
81+ watch (windowWidth , (w ) => {
82+ if (! isInitialized .value && w > 0 )
8383 initializeView (windowWidth .value , windowHeight .value )
84- }
8584}, { immediate: true })
8685
86+ // Fly to IP location once GeoIP resolves (if map already initialized without it)
87+ watch ([isGeoReady , mapInstance ], ([ready , map ]) => {
88+ if (ready && map && ! hasQueryParams .value && initialPoint .value )
89+ flyTo (initialPoint .value , { accuracyMeters: initialAccuracy .value ?? undefined })
90+ })
91+
8792logger .info (' Map page loaded' )
8893
8994const selectedLocationUuid = ref <string | null >(null )
0 commit comments