Aircraft view segment, deterministic range fit & nm scale bar #10

Merged
brenno merged 2 commits from feat/aircraft-view-and-map-scale into main 2026-06-17 14:54:12 +00:00
Owner

Overzicht

Lost twee meldingen op rond de luchthavenlijst en de kaart.

1. Vliegtuigen niet te vinden

De live-aircraft-lijst stond onderaan de lijst-view, ná tot 100 luchthavenkaarten — praktisch onvindbaar. Nu een eigen segment "Vliegtuigen" in de Lijst/Kaart-schakelaar (full-width lijst, laadt direct). Bestaande aircraftLayer-copy hergebruikt, dus meteen in alle 8 talen.

2. Cirkelgrootte & schaal

  • Cirkel vult het scherm bij openen. De fit liep alleen via een post-frame callback die soms vóór de definitieve kaartafmeting draaide → vaste initialZoom: 9 bleef staan → minuscule cirkel. Nu deterministisch via MapOptions.initialCameraFit (gedeelde helper _radiusCameraFit()). Bij wijzigen van de straal fit hij opnieuw.
  • nm-scalebar bovenin de kaart. Nieuwe _NauticalScalebar leest de live camera en toont een afgeronde afstand in nautische mijlen, zodat de zoom leesbaar is na een handmatige pan/zoom.

Verificatie

  • flutter analyze: schoon.
  • flutter test: alle 313 tests groen (test voor de aircraft-lijst schakelt nu eerst naar het Vliegtuigen-segment).

🤖 Generated with Claude Code

## Overzicht Lost twee meldingen op rond de luchthavenlijst en de kaart. ### 1. Vliegtuigen niet te vinden De live-aircraft-lijst stond onderaan de lijst-view, ná tot 100 luchthavenkaarten — praktisch onvindbaar. Nu een **eigen segment "Vliegtuigen"** in de Lijst/Kaart-schakelaar (full-width lijst, laadt direct). Bestaande `aircraftLayer`-copy hergebruikt, dus meteen in alle 8 talen. ### 2. Cirkelgrootte & schaal - **Cirkel vult het scherm bij openen.** De fit liep alleen via een post-frame callback die soms vóór de definitieve kaartafmeting draaide → vaste `initialZoom: 9` bleef staan → minuscule cirkel. Nu deterministisch via `MapOptions.initialCameraFit` (gedeelde helper `_radiusCameraFit()`). Bij wijzigen van de straal fit hij opnieuw. - **nm-scalebar bovenin de kaart.** Nieuwe `_NauticalScalebar` leest de live camera en toont een afgeronde afstand in nautische mijlen, zodat de zoom leesbaar is na een handmatige pan/zoom. ## Verificatie - `flutter analyze`: schoon. - `flutter test`: alle 313 tests groen (test voor de aircraft-lijst schakelt nu eerst naar het Vliegtuigen-segment). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Add an "Aircraft" segment to the list/map toggle so the live-aircraft
list has a discoverable home, instead of being buried below up to 100
aerodrome cards at the bottom of the list view.

Fit the range circle to the viewport deterministically via
MapOptions.initialCameraFit (shared _radiusCameraFit helper), so it no
longer opens far smaller than the screen when the post-frame fit raced
the map's measured size.

Add a nautical-mile scale bar overlay (top of the map) that reads the
live camera, so the current zoom is legible after a manual pan/zoom.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
On high-density screens RetinaMode.isHighDensity was true, making
flutter_map over-zoom (zoom+1 ⇒ 4× tile requests). OSM serves no @2x
tiles, so this only quadrupled the request burst; part of it was
dropped — silently, because silenceExceptions hides the failures from
the error/reload callback — leaving permanent grey gaps that a pan did
not recover. Plain 1× tiles fill the viewport reliably.

Verified on macOS: the range-circle map now renders edge to edge with
no missing tiles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
brenno merged commit 4041cec40c into main 2026-06-17 14:54:12 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
brenno/Hiero!10
No description provided.