Skip to main content

A map that reads like a rider's map

· 4 min read
Massimo Di Stefano
FastGIS author

The Adventure basemap has always answered the one question every other map makes you click for: what is that road made of. This week it learned to answer the rest of a rider's questions without being asked — where the ferry runs, which name is the pass, where the town stops, and which badge to keep when two collide. Four passes, each checked on real pixels before it shipped.

Things that were in the tiles all along​

The tiles we build carry more than the style read. Ferry routes were there and never drawn. Places had a rank and a capital flag; the style gave Bergen and a hamlet the same size ramp. Peaks had a prominence rank and saddles had names and elevations; Stelvio was invisible. Water names came as lines along the lake; the style anchored them at a vertex. Runways, land use, protected areas: all present, all unread.

Sognefjord at z11: ferries, before and after

So the first pass was correctness. Ferries draw from the regional view and carry their timetable's name. Scrub, heath and fell above the treeline take their own tone instead of the lawn green. Route shields stop appearing on Munich's staircases and start splitting E 16;E 39 into one number. Indoor and underground things stay indoors. The night theme stops leaking six day colours. Maritime borders stop looking like ferries.

A hierarchy​

The second pass gave labels a pecking order. Countries and states appear at the continental view, set light and spaced. Cities step in by rank, then towns, villages and hamlets, so a z6 view of Bavaria is no longer a wall of equal names. Suburbs become a quieter upper-case tier. Peaks come in one rank per zoom, highest summit winning a collision, and passes get their own glyph and outrank the summits around them — a pass is where you are going.

Stelvio at z13: passes and peaks

The same pass added a language: labels in the language the app speaks, the local name underneath from z12, because that is what the sign at the roundabout says.

Land, water, areas​

The third pass tinted land use faintly enough that a town reads as a town from z10 without a single road losing contrast, gave farmland its own tone, drew protected-area edges and names, and put runways and IATA codes on the map — a runway is the best orientation cue after a railway.

Munich airport at z12

Badges with a rider's priorities​

The fourth pass replaced the hand-drawn badge glyphs with CC0 silhouettes from Maki and Temaki, on our own badge frame, and added six categories the tiles already carried: mountain huts, supermarkets, sights, motorcycle parking, toilets and ATMs. More importantly, badges are now placed by a rider's priority. OpenMapTiles ranks a bar above a fuel station; on this map fuel wins that collision every time.

Munich at z16 with every category on

How it was checked​

Every pass rendered the same fourteen sites in headless Chrome, day, night and surface mode, before and after, with a census of placed labels per layer. Rows that should not change came back byte-identical. The renders sat in front of a person before anything was pushed. That harness is now in the repository, so the next change to the map pays for none of it again.

The map is on in the rider app under FastGIS Adventure, and on the desktop client's basemap picker. The full description is on the Adventure basemap page.