aboutsummaryrefslogtreecommitdiff
path: root/src/frontend/app/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/frontend/app/components')
-rw-r--r--src/frontend/app/components/shared/AppMap.tsx20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/frontend/app/components/shared/AppMap.tsx b/src/frontend/app/components/shared/AppMap.tsx
index d4ad557..f4c8658 100644
--- a/src/frontend/app/components/shared/AppMap.tsx
+++ b/src/frontend/app/components/shared/AppMap.tsx
@@ -163,14 +163,9 @@ export const AppMap = forwardRef<MapRef, AppMapProps>(
const viewState = useMemo(() => {
if (initialViewState) return initialViewState;
- if (mapPositionMode === "gps" && mapState.userLocation) {
- return {
- latitude: getLatitude(mapState.userLocation),
- longitude: getLongitude(mapState.userLocation),
- zoom: 16,
- };
- }
-
+ // Prefer the last saved position for this path so navigation doesn't
+ // reset the map viewport. GPS mode is only used as a fallback when the
+ // user has never visited this path before.
const pathState = mapState.paths[path];
if (pathState) {
return {
@@ -180,6 +175,14 @@ export const AppMap = forwardRef<MapRef, AppMapProps>(
};
}
+ if (mapPositionMode === "gps" && mapState.userLocation) {
+ return {
+ latitude: getLatitude(mapState.userLocation),
+ longitude: getLongitude(mapState.userLocation),
+ zoom: 16,
+ };
+ }
+
return {
latitude: getLatitude(APP_CONSTANTS.defaultCenter),
longitude: getLongitude(APP_CONSTANTS.defaultCenter),
@@ -210,7 +213,6 @@ export const AppMap = forwardRef<MapRef, AppMapProps>(
{showGeolocate && (
<GeolocateControl
position="bottom-right"
- trackUserLocation={true}
positionOptions={{ enableHighAccuracy: false }}
onGeolocate={(e) => {
const { latitude, longitude } = e.coords;