From 8a13fa8ceaff4a1c47658d0c20007cc5b77dba47 Mon Sep 17 00:00:00 2001 From: you Date: Thu, 19 Mar 2026 06:33:50 +0000 Subject: [PATCH] Map: default to Bay Area, save/restore user position+zoom Defaults to [37.6, -122.1] zoom 9. Saves position to localStorage on moveend. Restores on page load. Skips fitBounds when user has saved position. --- public/map.js | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/public/map.js b/public/map.js index 91b6b0a..32c8046 100644 --- a/public/map.js +++ b/public/map.js @@ -61,13 +61,27 @@ `; - // Init Leaflet - map = L.map('leaflet-map', { zoomControl: true }).setView([37.5, -122], 6); + // Init Leaflet — restore saved position or default to Bay Area + const defaultCenter = [37.6, -122.1]; + const defaultZoom = 9; + let initCenter = defaultCenter; + let initZoom = defaultZoom; + const savedView = localStorage.getItem('map-view'); + if (savedView) { + try { const v = JSON.parse(savedView); initCenter = [v.lat, v.lng]; initZoom = v.zoom; } catch {} + } + map = L.map('leaflet-map', { zoomControl: true }).setView(initCenter, initZoom); L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', { attribution: '© OpenStreetMap', maxZoom: 19, }).addTo(map); + // Save position on move + map.on('moveend', () => { + const c = map.getCenter(); + localStorage.setItem('map-view', JSON.stringify({ lat: c.lat, lng: c.lng, zoom: map.getZoom() })); + }); + markerLayer = L.layerGroup().addTo(map); routeLayer = L.layerGroup().addTo(map); @@ -154,7 +168,7 @@ buildJumpButtons(); renderMarkers(); - fitBounds(); + if (!savedView) fitBounds(); } catch (e) { console.error('Map load error:', e); }