kort/kort7/ARBEJDSPLAN.md

4.0 KiB
Raw Permalink Blame History

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
    • 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

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 UIet
  • 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.