Auto-locate user on first app launch

closes #17
This commit is contained in:
2026-02-10 17:18:59 +04:00
parent 4bc92bb7cc
commit c37f794eea

View File

@@ -68,6 +68,7 @@ export default class MapComponent extends Component {
// Default view settings // Default view settings
let center = [14.21683569, 27.060114248]; let center = [14.21683569, 27.060114248];
let zoom = 2.661; let zoom = 2.661;
let restoredFromStorage = false;
// Try to restore from localStorage // Try to restore from localStorage
try { try {
@@ -82,6 +83,7 @@ export default class MapComponent extends Component {
) { ) {
center = parsed.center; center = parsed.center;
zoom = parsed.zoom; zoom = parsed.zoom;
restoredFromStorage = true;
} }
} }
} catch (e) { } catch (e) {
@@ -243,6 +245,7 @@ export default class MapComponent extends Component {
const coordinates = geolocation.getPosition(); const coordinates = geolocation.getPosition();
const accuracyGeometry = geolocation.getAccuracyGeometry(); const accuracyGeometry = geolocation.getAccuracyGeometry();
const accuracy = geolocation.getAccuracy(); const accuracy = geolocation.getAccuracy();
console.debug('Geolocation change:', { coordinates, accuracy });
if (!coordinates) return; if (!coordinates) return;
@@ -307,7 +310,8 @@ export default class MapComponent extends Component {
this.mapInstance.getView().animate(viewOptions); this.mapInstance.getView().animate(viewOptions);
}; };
locateBtn.addEventListener('click', () => { const startLocating = () => {
console.debug('Getting current geolocation...')
// 1. Clear any previous session // 1. Clear any previous session
stopLocating(); stopLocating();
@@ -331,7 +335,9 @@ export default class MapComponent extends Component {
locateTimeout = setTimeout(() => { locateTimeout = setTimeout(() => {
stopLocating(); stopLocating();
}, 10000); }, 10000);
}); };
locateBtn.addEventListener('click', startLocating);
const locateControl = new Control({ const locateControl = new Control({
element: locateElement, element: locateElement,
@@ -340,6 +346,11 @@ export default class MapComponent extends Component {
this.mapInstance.addLayer(geolocationLayer); this.mapInstance.addLayer(geolocationLayer);
this.mapInstance.addControl(locateControl); this.mapInstance.addControl(locateControl);
// Auto-locate on first visit (if not restored from storage and on home page)
if (!restoredFromStorage && this.router.currentRouteName === 'index') {
startLocating();
}
this.mapInstance.on('singleclick', this.handleMapClick); this.mapInstance.on('singleclick', this.handleMapClick);
// Load places when map moves // Load places when map moves