4.0 KiB
4.0 KiB
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
- Demoen skal køres via lokal webserver, ikke
file://, fordi browser-adfærden ellers bliver upålidelig
Funktionel plan
1. Datamodel
- Udvide
data.js, så hver observation har:- fælles position, retning, hastighed, timestamp
uncertaintyAuncertaintyB
- Sikre at begge usikkerheder hører til samme observation i streamen
2. Layout
- Opdatere
kort7.htmltil 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
- Gemme arbejdsplanen
- Opdatere datamodellen i
data.js - Splitte
kort7.htmltil to kortviews - Refaktorere
app.jstil to renderingskontekster - Implementere usikkerhedscirkler per kort
- Implementere hjørneindikatorer per kort
- Teste zoom/pan og dynamiske overgange mellem inside/possible/outside
- Finjustere styling og læsbarhed
Erfaring fra implementeringen
- Flere UI-problemer viste sig at hænge sammen med, at demoen blev åbnet via
file://i stedet for en lokal webserver. - Zoom, pan og klik-relateret feedback opfører sig mere stabilt, når siden serveres via
http://127.0.0.1:4173/.... - Derfor er lokal server nu en del af den forventede runtime for demoen.
- Næste hovedskridt er stadig at gå fra ét kort til to samtidige kort med samme data og forskellige usikkerhedsperspektiver.
Å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.