← Back to blog

24 October 2026 · 540 words

A sun map with real data on every pin

producttechnical

The map has been part of FOMO Sun since spring. Until October it had an embarrassing secret: most of its pins were guesses.

377 grey dots

The map asked the API for every destination using an admin option. Since the admin lock-down in June, a public request doesn’t get that option. So the map received the usual 10 rows, and the other 377 pins were drawn as grey “no sun” dots. On a perfect day, the map looked like a cloudy one.

1.28 added a public map mode. It returns a small record for every place in reach: sun hours, temperature, fog position. The expensive part was already done: Swiss places come from the MeteoSwiss forecast the app holds in memory, and places abroad from the shared forecast cache. So the full map costs no extra weather calls. Places without a forecast are now hollow rings labelled “no forecast”, not grey dots pretending to be cloud.

Designed for zooming out

The map used to open on a small cluster in a sea of tiles. Now:

  • the lowest zoom fits the whole catalog to the screen, and panning stops at its edge
  • the Swiss topo layer only appears when you zoom in (its tiles end at the border and looked like a pale rectangle over Europe)
  • dots shrink as you zoom out, sunny ones stay a little larger and sit on top
  • the sun glow fades instead of smearing, and travel-time ring labels only show when they don’t overlap

On a phone the map is the whole page, with a slim bar for home and day, and a bottom sheet for the place you tapped. On a desktop there’s a panel with the sunniest place per travel time; click one and the map flies there.

A cold start bug

The first production check found the map showing 42 places instead of 251. On a fresh server, the MeteoSwiss data takes about 3.5 seconds to load, slightly longer than the map waited for it. The answer without it was then cached at the edge for five minutes. 1.28.1 lets the map wait up to 8 seconds once per server, and never caches an answer built without the Swiss data.

The week on a slider

1.29 put a dock along the bottom of the map: today and the next six days, each with home’s sun next to the best place within three hours. Tap or drag to change the day, or press play to watch the week go by.

The day on screen loads first; the other six load in the background, so scrubbing is instant. All days share one colour scale. Before, each day stretched its colours to its own sunniest place, so a grey Tuesday could look as bright as a clear Saturday.

What I learned

Check what the user actually receives. The map code was fine. It just never got the data, and grey dots looked like weather.

“No data” needs its own look. A missing forecast drawn as “no sun” is a wrong answer, not a gap.

One scale or no comparison. Colours only mean something when they mean the same thing every day.

Try it at fomosun.com/map.