Store current map view, use on launch/reload

This commit is contained in:
Râu Cao 2026-01-21 11:22:46 +07:00
parent afcc686e71
commit 696d4b0ae3
Signed by: raucao
GPG Key ID: 37036C356E56CC51

View File

@ -57,9 +57,33 @@ export default class MapComponent extends Component {
zIndex: 10, // Ensure it sits above the map tiles
});
// Default view settings
let center = [99.05738, 7.55087];
let zoom = 13.0;
// Try to restore from localStorage
try {
const storedView = localStorage.getItem('marco:map-view');
if (storedView) {
const parsed = JSON.parse(storedView);
if (
parsed.center &&
Array.isArray(parsed.center) &&
parsed.center.length === 2 &&
typeof parsed.zoom === 'number'
) {
center = parsed.center;
zoom = parsed.zoom;
}
}
} catch (e) {
console.warn('Failed to restore map view:', e);
}
const view = new View({
center: fromLonLat([99.05738, 7.55087]),
zoom: 13.0,
center: fromLonLat(center),
zoom: zoom,
projection: 'EPSG:3857',
});
@ -341,6 +365,22 @@ export default class MapComponent extends Component {
const bbox = { minLat, minLon, maxLat, maxLon };
await this.storage.loadPlacesInBounds(bbox);
this.loadBookmarks(this.storage.savedPlaces);
// Persist view to localStorage
try {
const view = this.mapInstance.getView();
const currentCenter = toLonLat(view.getCenter());
const currentZoom = view.getZoom();
const viewState = {
center: currentCenter,
zoom: currentZoom
};
localStorage.setItem('marco:map-view', JSON.stringify(viewState));
} catch (e) {
console.warn('Failed to save map view:', e);
}
};
handleMapClick = async (event) => {