# Arbejdsplan for kort7 ## Mål Bygge en løsning med to samtidige kortvisninger over samme positionsdata, hvor hvert kort repræsenterer sit eget perspektiv på usikkerhed. ## Principper - Samme køretøjspositioner og tidslinje i begge kort - Hvert kort har sit eget usikkerhedssæt - Zoom og pan skal kunne ske uafhængigt i hvert kort - Visning skal være viewport-drevet, ikke bundet til et bestemt geografisk udsnit - UI'et skal beskytte læsbarheden, også ved meget store usikkerheder ## Funktionel plan ### 1. Datamodel - Udvide `data.js`, så hver observation har: - fælles position, retning, hastighed, timestamp - `uncertaintyA` - `uncertaintyB` - Sikre at begge usikkerheder hører til samme observation i streamen ### 2. Layout - Opdatere `kort7.html` til to separate kortcontainere - Give hvert kort sin egen HUD/indikatorzone for køretøjer uden for viewport - Beholde fælles styring til play/pause/reset ### 3. Rendering-arkitektur - Omskrive `app.js`, så rendering sker per map-instans i stedet for globalt - Lade begge kort abonnere på samme simulerede tid og samme positionsstream - Lade hvert kort bruge sit eget usikkerhedsfelt ### 4. Viewport-logik pr. kort For hvert køretøj og for hvert kort skal systemet afgøre: - **inside**: køretøjet er inden for viewporten - **possible**: køretøjet er uden for viewporten, men usikkerheden overlapper viewporten - **outside**: køretøjet og dets usikkerhed er irrelevante for viewporten Denne vurdering skal genberegnes: - ved hver dataopdatering - ved zoom - ved pan ### 5. Visuel adfærd - **Inside:** - vis køretøjet på kortet - vis trail - vis transparent usikkerhedscirkel omkring køretøjet - **Possible:** - skjul køretøjets normale markør på kortet - vis en hjørneindikator i det relevante kort - indikatoren skal vise hvilket køretøj der muligvis kan være i området - gerne med farve, navn og retning/side i forhold til viewporten - usikkerhed på kortet kan evt. stadig vises diskret, hvis det giver mening - **Outside:** - vis hverken markør eller hjørneindikator - trail kan tones ned eller skjules ### 6. Håndtering af store usikkerheder - Undgå at enorme usikkerheder ødelægger læsbarheden - Klip visning naturligt til viewporten - Brug lav opacity for store usikkerhedsflader - Lad hjørneindikatoren være den primære forklaring, når centrum ligger uden for kortet ### 7. Sammenligning mellem perspektiver - Et køretøj må gerne være: - synligt på kort A - kun en mulig tilstedeværelse på kort B - eller omvendt - Dette er en ønsket effekt, fordi forskellen mellem perspektiverne netop skal være tydelig ## Implementeringsrækkefølge 1. Gemme arbejdsplanen 2. Opdatere datamodellen i `data.js` 3. Splitte `kort7.html` til to kortviews 4. Refaktorere `app.js` til to renderingskontekster 5. Implementere usikkerhedscirkler per kort 6. Implementere hjørneindikatorer per kort 7. Teste zoom/pan og dynamiske overgange mellem inside/possible/outside 8. Finjustere styling og læsbarhed ## Åbne designvalg - Om hjørneindikatorer skal ligge i et fast hjørne eller langs den nærmeste kant - Om store usikkerheder altid skal tegnes som cirkler på kortet, eller nogle gange kun repræsenteres via indikator - Hvordan vi bedst navngiver de to perspektiver i UI’et - Om trails skal vises ens i begge kort eller tones forskelligt ## Kort version Samme data. To kort. To forskellige usikkerhedsperspektiver. Dynamisk viewport-logik. Hjørneindikatorer for mulige off-map køretøjer.