Compare commits
2 commits
1c84dbd4f6
...
7bcb09a15c
| Author | SHA1 | Date | |
|---|---|---|---|
| 7bcb09a15c | |||
| 18c7749a72 |
3 changed files with 86 additions and 30 deletions
32
CHANGELOG.md
32
CHANGELOG.md
|
|
@ -9470,3 +9470,35 @@ Neste steg:
|
||||||
**Rullet ut umiddelbart** (produksjonsbug som traff ALLE brukere som
|
**Rullet ut umiddelbart** (produksjonsbug som traff ALLE brukere som
|
||||||
prøvde kart-basert måling) -- kun frontend-image, `teecup_api`
|
prøvde kart-basert måling) -- kun frontend-image, `teecup_api`
|
||||||
bekreftet uendret.
|
bekreftet uendret.
|
||||||
|
|
||||||
|
52. **PRODUKSJONSBUG: kartet sentrerte alltid på en hardkodet Oslo-
|
||||||
|
koordinat, aldri brukerens faktiske posisjon — 2026-08-08, umiddelbar
|
||||||
|
brukeroppfølging etter punkt 51.** Bruker: "Kartet viser ikke hvor
|
||||||
|
jeg faktisk er, men en eller annen vilkårlig by."
|
||||||
|
|
||||||
|
**Rotårsak:** `MapPointPicker` sin `center: [10.7522, 59.9139]` var
|
||||||
|
en HARDKODET Oslo-koordinat, ledsaget av en kommentar som hevdet
|
||||||
|
"real app centers on last-known position" -- den logikken fantes
|
||||||
|
ALDRI, kun påstanden i kommentaren. Kartet åpnet dermed alltid på
|
||||||
|
samme faste punkt i Oslo, uansett hvor i verden (eller landet)
|
||||||
|
brukeren faktisk befant seg.
|
||||||
|
|
||||||
|
**Rettet:** kartet henter nå brukerens ekte GPS-posisjon (ett
|
||||||
|
`getCurrentPosition`-kall, samme mønster som "Min posisjon nå"-veien
|
||||||
|
-- ingen løpende `watchPosition`) FØR selve Mapbox-kartet
|
||||||
|
initialiseres, og sentrerer der. Oslo-koordinaten beholdt KUN som
|
||||||
|
fallback for det tilfellet posisjon ikke kan hentes (avslått
|
||||||
|
tillatelse, tidsavbrudd, ingen støtte i nettleseren).
|
||||||
|
|
||||||
|
`tsc --noEmit` rent. **Scratch-verifisert i ekte nettleser** (tjueandre
|
||||||
|
scratch-miljø denne økten, samme migrasjon-002-forsiktighet,
|
||||||
|
`teecup_db` bekreftet uendret): overstyrte `navigator.geolocation` til
|
||||||
|
Bergen sentrum (60,39°N 5,32°Ø) og bekreftet kartet faktisk åpnet der
|
||||||
|
(synlig annen bystruktur enn Oslo-testen fra punkt 51, pluss Mapbox
|
||||||
|
sin egen posisjons-markør synlig i visningen) i stedet for på den
|
||||||
|
tidligere faste Oslo-koordinaten. Scratch-miljøet ryddet opp
|
||||||
|
fullstendig.
|
||||||
|
|
||||||
|
**Rullet ut umiddelbart** (samme produksjonsbug-alvorlighet som
|
||||||
|
punkt 51 -- traff alle som brukte kart-valget utenfor Oslo sentrum)
|
||||||
|
-- kun frontend-image, `teecup_api` uendret.
|
||||||
|
|
|
||||||
|
|
@ -36,11 +36,22 @@ export function MapPointPicker({ onConfirm }: { onConfirm: (lngLat: LngLat) => v
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
mapboxgl.accessToken = token
|
let cancelled = false
|
||||||
|
|
||||||
|
// Reell bug funnet 2026-08-08: kartet sentrerte ALLTID på en hardkodet
|
||||||
|
// Oslo-koordinat -- en kommentar her hevdet "real app centers on
|
||||||
|
// last-known position", men den logikken fantes aldri, kun påstanden.
|
||||||
|
// Henter nå brukerens faktiske GPS-posisjon FØR kartet initialiseres
|
||||||
|
// (kun ETT kall, samme som "Min posisjon nå"-veien -- ingen løpende
|
||||||
|
// watchPosition), med Oslo som fallback KUN hvis posisjon ikke kan
|
||||||
|
// hentes (avslått tillatelse, tidsavbrudd, ingen støtte).
|
||||||
|
function initMap(center: [number, number]) {
|
||||||
|
if (cancelled || !container) return
|
||||||
|
mapboxgl.accessToken = token as string
|
||||||
const map = new mapboxgl.Map({
|
const map = new mapboxgl.Map({
|
||||||
container,
|
container,
|
||||||
style: "mapbox://styles/mapbox/satellite-v9",
|
style: "mapbox://styles/mapbox/satellite-v9",
|
||||||
center: [10.7522, 59.9139], // Oslo fallback; real app centers on last-known position
|
center,
|
||||||
zoom: 16,
|
zoom: 16,
|
||||||
attributionControl: false,
|
attributionControl: false,
|
||||||
})
|
})
|
||||||
|
|
@ -66,11 +77,24 @@ export function MapPointPicker({ onConfirm }: { onConfirm: (lngLat: LngLat) => v
|
||||||
}
|
}
|
||||||
setPoint(lngLat)
|
setPoint(lngLat)
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const OSLO_FALLBACK: [number, number] = [10.7522, 59.9139]
|
||||||
|
if (typeof navigator !== "undefined" && navigator.geolocation) {
|
||||||
|
navigator.geolocation.getCurrentPosition(
|
||||||
|
(pos) => initMap([pos.coords.longitude, pos.coords.latitude]),
|
||||||
|
() => initMap(OSLO_FALLBACK),
|
||||||
|
{ enableHighAccuracy: true, timeout: 8000 },
|
||||||
|
)
|
||||||
|
} else {
|
||||||
|
initMap(OSLO_FALLBACK)
|
||||||
|
}
|
||||||
|
|
||||||
return () => {
|
return () => {
|
||||||
|
cancelled = true
|
||||||
markerRef.current?.remove()
|
markerRef.current?.remove()
|
||||||
markerRef.current = null
|
markerRef.current = null
|
||||||
map.remove()
|
mapRef.current?.remove()
|
||||||
mapRef.current = null
|
mapRef.current = null
|
||||||
}
|
}
|
||||||
}, [])
|
}, [])
|
||||||
|
|
|
||||||
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue