Auto Zoom - msupino/NavigationApp GitHub Wiki
🇮🇱 עברית
Auto zoom
Every place NavAid changes the zoom for you, what triggers it, and the gist key that governs it. Nothing here changes the zoom while you are simply flying and looking at the chart — each one is tied to an action.
Following the aircraft
The only automatic zoom that happens without you pressing something on the map.
| When | What happens |
|---|---|
| The first fix — Location or Record finds you | Centres on the aircraft and clamps the zoom into a flying band |
| Turning the follow switch on | Same: re-centre and clamp |
| Every later fix while following | Re-centres only. The zoom is left exactly as you set it. |
Following resuming after a hand pan (followResumeMs, 5 s) |
Re-centres only. Zoom untouched. |
The band depends on where the aircraft is:
| closest (floor) | widest (ceiling) | |
|---|---|---|
| Inside a control zone | followZoomCtrFloor 12 |
followZoomCtrCeiling 15 |
| Everywhere else | followZoomFloor 10 |
followZoomCeiling 14 |
In a CTR the questions are close-in ones — which reporting point, which runway, where the traffic is — and a 40-mile view answers none of them. En route the opposite.
It is a clamp, not a setting: a zoom already inside the band is a deliberate choice about how much chart to see, and is left alone. Whether you are in a CTR is read from the airspace geometry, not from the airspace layer being switched on.
Worth knowing: at z15 outside a CTR, re-engaging follow pulls you out to 14, because 15 is
above the en-route ceiling. Inside a CTR the same zoom is left alone. If you fly at 15,
raise followZoomCeiling.
An inverted band (floor above ceiling) changes nothing — it is treated as "not a band", so a typo cannot re-frame the map to something arbitrary. Setting floor = ceiling forces one exact zoom. Setting 6 / 18 on both pairs turns the framing off entirely.
Fitting something into view
All of these are actions you take, and all cap how far in they will go — a single point or a tiny area would otherwise zoom to the maximum and lose all context.
| Action | Max zoom | Padding | Also |
|---|---|---|---|
| Fit route | fitRouteMaxZoom 11 |
fitRoutePaddingPx 70 |
With no route: fitRouteEmptyZoom 9 at the default view |
| Show a NOTAM on the map | fitNotamMaxZoom 11 |
fitNotamPaddingPx 80 |
A single-point NOTAM zooms no further out than fitNotamPointZoom 10 |
| Show a recorded GPS track | fitTrackMaxZoom 13 |
fitTrackPaddingPx 60 |
A one-point track: fitTrackPointZoom 12 |
| Open an IFR plate overlay | fitPlateMaxZoom 13 |
fitPlatePaddingPx 24 |
Skipped entirely while a position is live — see below |
| Jump to an altitude pair | fitAltPairMaxZoom 12 |
fitAltPairPaddingPx 80 |
|
| Jump to an LSA area | fitAreaMaxZoom 12 |
fitAreaPaddingPx 40 |
|
| Fit a metre-box (georeferencing) | — | fitBoxPaddingPx 30 |
A live position wins. Opening a plate overlay does not move the map while Location or Record is on: the map is showing where you are, and that outranks framing a chart.
Zoom that is not the map's
Two panels have a zoom of their own, unrelated to the map's:
- Satellite preview in the airfield inspector —
satellitePreviewZoom16, andsatelliteExpandedZoom17 when opened out. The slider is bounded bysatelliteMinZoom13 andsatelliteMaxZoom18. - Magnifier —
magBaselineZoom12 is the zoom its magnification is measured against.
Zoom by hand
- Double tap zooms in one step. Over a route element — a waypoint, a leg, a callout — the app takes the gesture itself and performs the zoom, because letting the browser handle it would also fire the leg-split handler and cut the route in two.
- First run opens at
defaultViewZoom11. - Printing can nudge the fitted zoom:
a3FitZoomOffset/a4FitZoomOffset, both 0 by default. - Charts are published to a maximum native zoom (z13 for CVFR); beyond that the app overzooms the same tiles rather than showing blank. See Map Layers.
See also
- The Map — the follow switch itself
- Tuning Panel — where these keys live and how the gist overrides them
- Map Layers — native zoom and export