Skip to content

Base maps and relief

Every base map the panel offers works without a Mapbox account. That is a design constraint, not a coincidence, and it is the reason the picker looks different from stock kepler.gl's.

What is on offer

ChoiceSourceNotes
Match theme (default)CartoDark Matter in dark mode, Positron in light
Dark MatterCartokepler's own entry
PositronCartokepler's own entry
VoyagerCartokepler's own entry
Satellite (Esri)Esriflat imagery
Satellite + reliefEsri + Mapterhornimagery over real elevation
Topographic + reliefEsri + Mapterhorntopographic map over real elevation
No Basemapempty background, no tiles fetched at all
Self-hosted style.jsonyoufor air-gapped installs

Why the list is replaced rather than extended

kepler.gl ships nine default base maps, and five of them are Mapbox styles — Satellite With Streets, Dark, Light, Muted Light, Muted Night. Every one is a mapbox:// URL that cannot load without an account. Left in place they sit in the picker as choices that blank the map when clicked, which is a worse experience than not offering them.

So the panel replaces kepler's list entirely and re-registers the three that do work without a token — Carto's — from kepler's own definitions rather than by copying them, so an upstream rename surfaces as a test failure instead of a silently broken entry.

"No Basemap" is re-added deliberately: it is how a dashboard shows data on a plain background with no tiles requested at all, and replacing the list would otherwise have dropped it along with the Mapbox ones.

Relief

Satellite + relief and Topographic + relief carry a terrain key in their style document, which MapLibre reads directly. kepler passes it through untouched, which is the entire reason elevation is possible here — kepler has no terrain feature of its own. The elevation tiles come from Mapterhorn.

Tilt the camera with the 3D control and the ground rises.

Your data does not drape over the terrain

The relief belongs to the base map. deck.gl draws your data at its own altitude, so points and paths float at their nominal height rather than following the ground beneath them. A trail through a valley will not hug the valley floor.

This is a deck.gl property, not a bug in the styles — see Under the hood.

A second thing to know before leaning on it: kepler pins MapLibre 4, where panning a tilted terrain map can make the camera jitter (keplergl/kepler.gl#3394).

Thumbnails

The style picker's thumbnails are real tiles from the service each style draws, at zoom 3. That is deliberate on two counts: kepler names its own thumbnails as paths under whatever asset base the host application configures — and this plugin points that at its own assets, so kepler's thumbnail paths would 404 — and a thumbnail fetched from the same service as the style is honest, because when it is unreachable, so is the style it stands for.

kepler renders them as <img>, so they fall under Grafana's img-src, which is open. The tiles themselves are fetched by MapLibre over XHR and fall under connect-src, which is not.

Content Security Policy

On a hardened Grafana each choice needs its host allowed in connect-src:

ChoiceHost to allow
Carto's three, and Match themehttps://basemaps.cartocdn.com and https://*.basemaps.cartocdn.com
Satellite, Topographichttps://services.arcgisonline.com
Either relief stylethe above, plus https://tiles.mapterhorn.com
No Basemapnothing
Self-hostedyour own host

Leave out the ones you never select. Full configuration in Install.

Self-hosted style.json

Set Base map to Self-hosted style.json and give it a URL. This is the answer for an air-gapped install, and also for anyone who would rather not depend on a third party's tile service or accept Esri's terms.

Anything MapLibre can read works, including one with its own terrain key — the panel does not special-case its own relief styles, it simply passes the document to MapLibre.

Esri's terms of use

The satellite and topographic imagery come from Esri's public services.arcgisonline.com endpoint, whose terms ask for an ArcGIS account for production use. An install that needs a cleaner footing should point Base map at its own style.json.

Interaction with saved configurations

A saved map configuration names its own base map, and it wins over the panel option. If you save a map while looking at satellite imagery and later switch the Base map option to Positron, the saved configuration will put you back on satellite. Re-save the map to change it.

This is also why the layer gallery dashboard does not follow the Grafana theme: pinning a specific layer type requires a saved configuration, and a saved configuration brings its base map with it.

Apache-2.0. Bundles kepler.gl (MIT) and flowmap.gl (Apache-2.0).