Map zoom controls and re-centre #43

Open
opened 2026-08-31 17:14:52 +02:00 by robert · 0 comments
robert commented 2026-08-31 17:14:52 +02:00 (Migrated from git.butzei.de)

Goal

Minimal interaction on the map screen.

Acceptance criteria

  • Up and Down zoom the viewport through a fixed set of scales
  • Zoom level sent to the phone so it clips to the matching extent
  • Re-centre command via CMD after panning or a GPS gap
  • Zoom level persists across view switches and app restarts
  • Buttons stay responsive while frames are arriving

Files

  • watchapp/src/c/view_map.c

Update — 2026-09-02: zoom and re-centre are local

Previously zoom sent the level to the phone and waited for a matching frame. That made NFR-P6's 100 ms
button response unsatisfiable — the map could not redraw until a round-trip completed (D39).

  • Zoom and re-centre are local transforms of the slice already in memory. No round-trip, no
    wait
  • "Zoom level sent to the phone so it clips to the matching extent" is removed; the phone
    sizes slices from SCREEN_* and the rider's speed, not from the zoom level
  • Panning beyond the current slice requests a new anchor, and says so rather than showing blank
  • Zoom level still persists across view switches and app restarts
## Goal Minimal interaction on the map screen. ## Acceptance criteria - [ ] Up and Down zoom the viewport through a fixed set of scales - [ ] Zoom level sent to the phone so it clips to the matching extent - [ ] Re-centre command via `CMD` after panning or a GPS gap - [ ] Zoom level persists across view switches and app restarts - [ ] Buttons stay responsive while frames are arriving ## Files - `watchapp/src/c/view_map.c` ## Update — 2026-09-02: zoom and re-centre are local Previously zoom sent the level to the phone and waited for a matching frame. That made NFR-P6's 100 ms button response unsatisfiable — the map could not redraw until a round-trip completed (D39). - [ ] Zoom and re-centre are **local transforms** of the slice already in memory. No round-trip, no wait - [ ] "Zoom level sent to the phone so it clips to the matching extent" is **removed**; the phone sizes slices from `SCREEN_*` and the rider's speed, not from the zoom level - [ ] Panning beyond the current slice requests a new anchor, and says so rather than showing blank - [ ] Zoom level still persists across view switches and app restarts
Sign in to join this conversation.
No description provided.