Outdoor maps

Outdoor basemaps with the terrain already in them

Contour lines, hillshading and water depths are layers in the style, not a second service to wire up. Trail difficulty grades come through in the data. One style URL, no API key, no sign-up.

Outdoor map of the Gosaukamm in the Dachstein: contour lines over forest and alpine meadow, rock texture on the Donnerkogel, the turquoise Gosausee, waymarked routes carrying the shields D1, 614 and 01A, a cable car and a mountain hut labelled with its elevation.
map.setStyle("https://styles.maptoolkit.org/hiking.json");
What is in the tiles

The terrain arrives with the style

These are the layers doing the work, and which of the styles carry them. All are served live, at no cost, with no separate elevation service to configure.

Contour lines

Three contour layers in every style, from a dedicated vector source. Winter draws them in a single colour so they stay legible against snow; the others use multicoloured contours that read against forest and rock.

Hillshading, one pass or four

Summer, Cycling, Street, Light and Dark use one gentle pass. Hiking and Winter run four: three ambient-occlusion passes at increasing blur radius plus a dramatic pass, which is why mountains read as mountains on them.

Rock texture

Hiking, Cycling and Winter overlay a rock-texture raster on steep ground, so a cliff face looks like rock rather than a shaded slope. Summer relies on hillshading and land cover instead.

Water depths

A color-relief bathymetry layer in every style, driven by its own elevation source, so lakes and coastal shelves shade by depth rather than filling flat blue.

Paths and waymarked routes

Paths, tracks and footways across eight to twelve layers depending on the style, and waymarked route relations with their own shields, so a numbered long-distance route reads as one line rather than a chain of segments.

Aerialways all year

Gondolas, cable cars and chair lifts render with labels in every outdoor style, summer as well as winter, which matters for routes that start or finish at a lift station.

Every map using these tiles keeps the Maptoolkit logo and the copyright line visible. The attribution guide covers the exact requirement and the drop-in plugins for MapLibre and Leaflet.

The outdoor data

Difficulty grades a generic basemap does not carry

The road layer carries the OpenStreetMap outdoor tags alongside the usual classification. This is the part that cannot be copied by pointing a renderer at a different free tile server, because the fields have to be in the tiles before any style can use them.

Difficulty

sac_scale for hiking, graded T1 to T6. mtb_scale for mountain biking, 0 to 6. via_ferrata_scale for protected climbing routes, A to E.

Networks and surface

walking_network and cycling_network for membership of a local, regional, national or international route network, and surface for whether a track is gravel, compacted or paved.

// Pick out anything above SAC T3, so an easy-walking audience
// is not sent up something that needs hands.
map.addLayer({
  id: 'hard-paths',
  type: 'line',
  source: 'mtk',
  'source-layer': 'road',
  filter: ['in', ['get', 'sac_scale'], ['literal', ['T4', 'T5', 'T6']]],
  paint: { 'line-color': '#9E4130', 'line-dasharray': [2, 2], 'line-width': 1.6 }
});

The full field list and the values each tag takes are in the outdoor tags reference.

Pick a style

Three styles built on it

Same tiles and the same outdoor data underneath. What differs is which of it each style pushes forward.

Hiking

132 layers. Six for waymarked routes and their shields, nine path layers, four hillshade passes, roads held back. The one to use when the trail is the subject.

Cycling

134 layers, the largest of the seven. Nineteen for cycling alone, including the numbered node networks used across the Benelux, and one gentle hillshade so route lines keep their contrast.

Ski and winter

118 layers. Piste difficulty colour-coded on the European convention, nordic trails graded separately, eight lift types and run numbers from the piste reference.

Going further

Terrain in 3D, or your own cartography

3D terrain and buildings

Add -3d to any style name and the map has terrain, configured against the same elevation model the hillshading uses. Street draws buildings in 3D as well.

Design your own style

Restyle any of the seven in the browser and host the result yourself, with the outdoor data still underneath it. The published styles are the starting point.

Questions

Frequently asked questions about outdoor maps

Do I need a separate terrain source for the hillshading?

No. The contour lines, hillshading and water depths are layers inside the style, already pointing at the elevation model. Give MapLibre a style URL and they render, with nothing to configure and no second service to sign up for. Only the -3d variants add a terrain mesh on top of that.

How far in can I zoom?

The data stops at zoom 15. Past that the renderer overzooms, so labels and geometry stay sharp but no new detail arrives. For trail, resort and route work 15 is enough.

Can I get elevation numbers out of this?

Not from the tiles. The contours and hillshading are cartographic, drawn to be read rather than measured, so sampling them will not give you usable figures. Elevation per coordinate is the Elevation API on maptoolkit.com, a separate paid service.

How current is the OpenStreetMap data?

Weekly. A trail, a lift or a re-graded route mapped in OpenStreetMap today reaches the tiles within the week, with no pipeline of your own to maintain.

Can I use this in something I sell?

Under the Community License, yes, if the organisation is under EUR 1 million annual consolidated revenue and has fewer than 10 full-time employees. Past either threshold the commercial tiles on maptoolkit.com apply. Non-commercial and community projects have no thresholds at all.

What happens when my traffic spikes?

Unregistered traffic gets 120 tiles per second sustained and 200 in burst per website, with a 40 tiles per second cap per visitor IP. Cached tiles do not count, and the edge cache absorbs most requests. There is no SLA on the community service, so it is not the right choice behind anything life-safety or billing-critical.