Map prototype
One globe, then the districts.
Can a single MapLibre map spin as a shaded globe and zoom to an OSM admin boundary, or does the look need a second renderer? A wins a tie.
Experiment A
MapLibre only
One camera, one input system. The projection eases from globe to Mercator. A custom shader rides along.
Experiment B
Three.js, then a handoff
A noise-warped intro globe crossfades to the same MapLibre view in about 400 ms. The pop is the cost.
How the choice is made
- Visible pop at the handoff. A should have none. B is measured by frame diff.
- Visual ceiling. B is allowed to look richer. It has to be clearly better, not merely different.
- Input. A has one gesture the whole way. B switches pointers at the cutover.
- Frame rate while spinning. 50 fps on a mid-range laptop, 30 on a phone. The numbers below are from this build, not that laptop.
- Build effort. A is the map. B is a second camera that has to stay aligned.
If those do not separate the two, A is the answer.
Measured on this build
Loading the readout…
Frames
Zoom bands
| Zoom | Projection | Admin levels | Shader |
|---|---|---|---|
| 0–3 | Globe, spinning | 2 | On |
| 3–6 | Globe, still | 2 | On |
| 6–10 | Globe | 2 and 4 | Fading |
| 10–12 | Globe to Mercator | 4 and 6 | Trace, then off |
| 12+ | Mercator | 6 and 8 | Off |
Both experiments use the same parchment, ink, and gold. Tiles are OSM-derived vector tiles from tiles.ghj.io. OpenFreeMap is the fallback in src/config.js.