--- name: position_orientation_change_fix description: Fix for position map not displaying on screen orientation changes type: project --- ## Issue: Position/Geolocation Not Displaying on Screen Orientation Changes **Problem:** The ArcGIS map component (`AscGISMap.vue`) failed to display or update position when the screen orientation changed between portrait and landscape modes. **Root Cause:** 1. The component uses `v-if="$q.screen.gt.xs"` for conditional rendering of different layouts 2. When orientation changes, the ArcGIS MapView doesn't automatically resize to fit the new container dimensions 3. ArcGIS MapView requires manual `resize()` call when its container's size changes **Solution Implemented:** Added screen resize handling to `src/components/AscGISMap.vue`: 1. **Added state tracking:** - `isMapInitialized` ref to track when map is ready - `isInitializing` ref to prevent concurrent initializations 2. **Added `handleMapResize()` function:** - Checks if mapView exists and isn't destroyed - Uses `nextTick()` to ensure DOM updates complete before resizing - Calls `mapView.value.resize()` to update map dimensions 3. **Added watcher on `$q.screen.gt.xs`:** - Triggers when screen size crosses the xs breakpoint - Waits for DOM update via `nextTick()` - Calls `handleMapResize()` to adjust map 4. **Added window resize event listener:** - Falls back for orientation changes that might not trigger Quasar's screen watcher - Debounced with 300ms timeout to avoid excessive calls - Properly cleaned up on component unmount **Files Modified:** - `src/components/AscGISMap.vue` - Added resize handling logic **Best Practices Applied:** - Proper cleanup of event listeners in `onBeforeUnmount` - Debouncing resize events for performance - Using `nextTick()` to ensure DOM synchronization - Checking for destroyed state before calling map methods **Note:** The Google Maps component (`MapCheckin.vue`) was not affected as `vue3-google-map` handles resize automatically.