Plugins
ApplicationCommercialMarketplace
Kepler Geospatial Maps Plus logo

Kepler Geospatial Maps Plus

UBICA

Get plugin

Changelog

1.4.1 (2026-10-21)

  • Catalog links: the plugin's links name a Support page (https://docs.ubica.dev/plus/support) and call the licence link License and terms, as the Grafana Marketplace asks. Nothing else changes.

1.4.0 (2026-10-20)

Built from the free panel v1.4.0, whose own changes come with it: kepler.gl 3.3.0-alpha.17 (a ⋮ menu on each layer card; Export data in GeoJSON, GeoParquet, Shapefile, GeoPackage, KML and KMZ, with the writers' WebAssembly shipped in the plugin; Filter out; a legend section, fading by zoom and a map name and description under Interactions; a right-click that copies the coordinates under it); kepler's dialogs, the data table among them, open over the whole dashboard instead of being cut at the panel's edges; the map's name and description survive Save map; and the free panel's own layer icons take their amber from an Emotion class instead of a <style> element.

  • No key in the open settings: Plus takes only the Google and Azure Maps keys, which it has kept in Grafana's encrypted settings since 1.3.0. The MapTiler, CARTO and Esri keys, which those providers take only in the URLs a browser asks for, and which every signed-in user could therefore read in the app's settings, are no longer offered or read, and MapTiler's and Esri's keyed base maps go with them. Change: a map saved on a MapTiler or Esri style opens on the free default with a notice saying so; pick another base map and save the map. The configuration page warns about the keys an earlier version saved, and saving it removes them; revoke them in each provider's account. CARTO's Dark Matter, Positron and Voyager stay, asked without a key, and Esri's imagery stays as the free panel's Satellite (Esri), which needs none. Relief is drawn on Azure Maps' styles, and on the free panel's relief styles.
  • No CARTO key in dashboards: the free panel's CARTO API key option, which saves its key in the dashboard's JSON, is not offered in Plus. A panel saved with one, by the free panel or an earlier Plus, never uses it, and the next save of the dashboard leaves it out.
  • Time Brush zooms to a window set from outside: with Zoom to a window set from outside on, a window that a link, another panel or the time picker sets brings the axis to it, with a quarter of its width either side.
  • Sparkline clicks with the tooltip off: a click on a Sparkline's dot or card selects its place with the tooltip switched off, as it does with it on.
  • Privacy policy 1.2: Plus keeps no key where a browser can read it.

1.3.0 (2026-10-16)

Built from the free panel v1.3.0, whose own changes come with it: no code is fetched from third-party hosts (the Draco, Basis and Parquet decoders ship in the plugin's panel/loaders/ folder and loaders.gl starts no workers); the Raster tile server option is empty by default instead of Development Seed's public demo at titiler.xyz; symbols anchor at their centre, an edge or a corner and turn about that anchor or their centre; and a Save map button on the map, while the panel is open in the panel editor, saves the map configuration as the editor's button does.

  • Google and Azure Maps keys stay on the server: they are kept in the app's encrypted settings (secureJsonData), and maps ask Google (base maps, sessions, the copyright of the view, Photorealistic 3D Tiles) and Azure Maps (tiles and attribution) through Grafana's plugin proxy, which adds the key as a request header. No browser sees either key. The proxy also blanks the headers Grafana would send the provider about the signed-in user. On the configuration page both show as configured, with a Reset, never in full. Change: after upgrading, the configuration page fills both in from where 1.2 kept them and asks to save; until it is saved, Google and Azure base maps and Google's 3D tiles are not offered. A Google key restricted to websites is refused through the proxy, which sends no Referer: restrict it to the Map Tiles API instead.
  • CARTO, MapTiler and Esri keys stay browser keys, in the app's settings as before: those providers take a key only in the address the browser asks for, which Grafana's plugin proxy for app plugins cannot add. Their fields now say so, and that the key must be restricted to this Grafana's address.
  • No navigation entry: the app no longer adds an item to Grafana's navigation menu, which opened a page saying "No root app page component found". The layer tour is still installed with the app, in Grafana's dashboard browser and on the app's Dashboards tab.
  • Time Brush preferences migrated: each reader's floating bar place and dock choices are kept in the browser's localStorage under keys that start with the panel's full plugin id, ubica-timebrush-panel; those kept under the old ubica-timebrush keys move over the first time they are read, so nobody loses them. Time Brush also finds Grafana's fixed and sticky bars from a handful of known elements instead of reading every element on the page.
  • Light theme for the chips: the Fleet follow camera's chip takes the Grafana theme's colours, light on the light theme where it stayed dark, and the same on the dark theme; the Plus layer icons and the wider hint tooltips are styled with Emotion instead of raw style elements.
  • Stricter model URLs: a Fleet type's custom 3D model must be an https:// URL or a path to the plugin's own files in Grafana; protocol-relative (//host/…) and other page-relative paths are refused and the type is drawn with its built-in shape. The Cesium ion token is sent only to an https URL on assets.ion.cesium.com, matched as a host rather than as text anywhere in the URL.
  • Privacy policy 1.1: it lists what Time Brush keeps in the browser's localStorage, and Cesium ion (Cesium GS, Inc.) among the providers, with what the browser sends it.

1.2.0 (2026-10-15)

Built from the free panel v1.2.1, as 1.1.0 is.

Time Brush, a second panel

  • Time Brush Plus, a panel for the whole dashboard: a histogram of its query with a window to drag, resize or draw, buttons to go to the start and the end and to step one bucket either way, and a play with kepler's window modes (free, incremental, interval) at a chosen speed. The window is written to two dashboard variables as UTC ISO 8601, the contract the map panel's Slider writes variables already reads and writes, so a map follows it without any change; or to the dashboard time range, for dashboards whose queries use it. One bucket size, auto or an interval such as 15m, rules the bars, the snap of the window and the length of a step. A play writes no faster than the chosen interval, and waits for the panels answering the previous write when the DuckDB-WASM datasource is on the page, as the map panel does.
  • The bar pins to the top of the page once the panel scrolls out of view, where the panel was across it, so a long dashboard keeps its clock in reach; an arrow on it scrolls back to the panel. Options choose what the pinned bar carries (everything, or the buttons and the readout), how tall its histogram is, and a solid or translucent background.
  • A floating bar is resized in both directions from its bottom-right corner, and a save button on it keeps its place in the dashboard, for everyone, on top of what each browser remembers for itself.
  • A floating bar keeps to the edge or corner it was left nearest (the top or the bottom; the left, the middle or the right), with its width a share of the screen's, so a place saved with the dashboard carries to other screens and to kiosk mode; dropped near an edge it sticks to it, and it never lands off a smaller screen. On a phone it spans the width at its edge, without grips. Places saved in pixels are anchored on the screen that opens them.
  • The pinned bar minimizes to a pill (the window, play and a button to bring it back) and maximizes across the page with a taller histogram, for a while: both are forgotten once the bar is back in the panel.
  • A bucket menu on the bar itself: automatic, or a year, a month, a week, a day, an hour, a minute or a second, with the sizes too fine for what the axis shows offered disabled. With the Bucket option set to a variable ($bucket), the size is the dashboard's: a filter or another panel's cross-filter sets it, the menus write it, and the queries can use it too.
  • A chosen bucket too coarse for what the axis shows (a year over ten months of days, less than two bars) falls back to the automatic size, as one too fine already did, instead of drawing one bar across the whole track; the menu offers it disabled.
  • The pinned bar sits above the dashboard's filters of Grafana 13, which keep their row at a higher level than Grafana 12 did and covered it, and a floating bar stops under them rather than going over them.
  • Narrow toolbars leave out the mode and speed pickers (under 600 px) and then the zoom buttons (under 400 px, a phone), so the steps, play and the bucket stay on them.
  • The bar can be pinned always, on the page from the moment the dashboard opens with the panel reduced to a placeholder, as well as when the panel is scrolled past, or never.
  • The pinned bar can go to the bottom of the page instead, or float: dragged by a grip at its left, resized by one at its right, and remembered where it was left, per dashboard and panel, in the browser. A bottom or floating bar pins whenever the panel is out of view, below the fold included.
  • Appearance options: the window's colour, the shared cursor's colour, bars per series or in one colour, how visible the bars outside the window stay, the time axis, the mode and speed pickers, and a compact density.
  • Each series is drawn as bars, a line or an area, from its field's options, so overrides give one query bars and another a line; Per bucket reduces its rows by sum, mean, min, max, last or count (auto sums bars and averages lines). A context series is drawn in grey behind the others, unstacked: the whole, beside what the dashboard's filters leave.
  • A square-root or logarithmic value scale keeps small buckets visible beside very large ones, and the buckets before the first row and after the last are hatched, so no data does not read as zero.
  • Keys on the brush: the arrows move the window a bucket, Shift and an arrow move its end, Home and End jump, Space plays, Escape stops, A selects everything.
  • When the bar is out on the page, the panel becomes a dock: the window in large type and where it goes, quick "last …" windows, the bucket, scale and draw style, where the bar sits and a way back into the panel. What a reader changes there is kept in their browser, and an editor can make it the dashboard's.
  • The axis zooms and pans: Ctrl or ⌘ and the wheel about the pointer, Shift and the wheel or a sideways wheel to pan, buttons and the + and - keys about the window. A strip under it shows the whole range, where the view is (drag it) and where the window is; the auto bucket follows the zoom. View variables, when named, carry the view's bounds and its bucket in seconds, so the panel's query is asked again at the resolution being looked at.
  • An instant instead of a window, written to one variable: a playhead for a picture per date or a position at one moment. A series drawn as marks puts a tick at each of its times (the dates an imagery catalogue has), and the window or the instant can snap to the marks, step between them and play through them.
  • Choose by date: with marks, a drill-down over the times that exist, years then months, days and times, skipping any level with one choice; without them, date and time inputs.
  • Hovering the brush lands on the bucket under the pointer, lit, with a tooltip of its values to turn on; its start is what reaches the shared crosshair.
  • A background of the panel's own, a colour and its transparency (90 % unless set otherwise), under the toolbar and the track and on the pinned bar.
  • Bars coloured by value: with a series colour scheme by value (thresholds in percent of the tallest bar, or a by-value gradient), each bar takes the colour of its value, so the track can carry a map's ramp; value guides draw rules at the tallest bar and at half of it, with their values.
  • A chosen bucket keeps its case, so 1M is a month and 1m a minute, and one too fine for what the axis shows (more than 2,000 buckets) falls back to the automatic size instead of freezing the page; the reader's choices reach 90 days and a year for long ranges.
  • The brush takes part in the dashboard's shared crosshair: hovering it moves the graphs' cursor, and a cursor from a graph is drawn on the histogram.

Archive

  • The archive carries source maps for the app and its two panels, with the source inside them, as the Grafana plugin catalog requires of every plugin. They also make an error in the browser's console point at the line of source that raised it.

1.1.0 (2026-10-14)

Built from the free panel v1.2.1, which changes only how the plugin is built: the development build's eslint-webpack-plugin is gone, with the braces advisory no release fixes (CVE-2026-93687) that came with it. Plus drops it too.

Layers

  • Gauge and Sparkline's dots draw over the base map groups moved to the top of the map (Map Layers › top), roads and labels included, as the cards already did, and over the other layers: the switches Over roads and labels (Gauge) and Dots over roads and labels (Sparkline), on by default; off, they keep their place in the layer order, under those groups. A gauge's name label goes with it.
  • Surface draws inside the base map, under its 3D buildings, so on a tilted map a building stands in front of the bands instead of under them: the switch Under 3D buildings, on by default, which takes a base map that draws its own 3D buildings (OpenFreeMap Liberty, MapTiler) and stands down with Relief, on the globe and on a Mapbox base map. Hovering still shows the estimate under the cursor.
  • Surface lies on the ground of a 3D tileset on the same map (Google Photorealistic 3D Tiles): the switch Follow 3D tiles, on by default, lays the bands two metres over the ground the tiles' meshes tell, isolines and labels with them, so the relief neither buries the surface where the land rises nor leaves it floating where it falls, and buildings stand through it. The ground is read from the tiles loaded for the view, so the surface settles as they load. Off, or with no tileset on the map, the surface stays flat.
  • Surface takes an Altitude in metres above the ground.
  • Surface's nested bands no longer streak on a tilted map: they are translucent and never hide anything, so they no longer write the depth buffer.
  • Sparkline and Fleet cards show the same cards, in the same places, with a base map group (labels, roads) moved to the top of the map (Map Layers › top): their copy in the top map placed its cards afresh, with a memory of its own, so a card could sit elsewhere than the one under it, and cards the map below had left out for want of room came up in the copy.
  • Sparkline and Fleet cards stay whole with the 3D buildings moved to the top of the map (Map Layers › top): their copy in the top map was depth-tested against the buildings, which cut through every card, and a card whose station sat just above the top edge of the map was clipped away by the map's far plane.

1.0.0 (2026-10-13)

The first release, so this entry lists what the plugin does rather than what changed. Kepler Geospatial Maps Plus is an app and a panel built from the free panel v1.2.0, so every feature of the free panel is in it; on top of them it adds the keyed base maps of MapTiler, Esri, Azure Maps and Google, places drawn without coordinates, alerts and links on the map, and its own layers for sites, networks and fleets.

Compatibility

  • Grafana 12.0.10 or later within 12.0, 12.1.7 or later within 12.1, and 12.2.5 or later, 13.x included, as the free panel.
  • Requires WebGL 2.

Base maps

  • MapTiler's base maps in kepler's style picker, for organisations that set a MapTiler key.
  • Esri's ArcGIS basemap styles, for organisations that set an ArcGIS Location Platform key, with Esri's attribution.
  • Azure Maps' road, dark grey, imagery and hybrid maps, with Microsoft's attribution, and a warning on the configuration page that its key cannot be restricted.
  • Google's roadmap, satellite, hybrid and terrain maps (Map Tiles API) for organisations that set a Google key, with Google's logo and the copyright of the view on the map, and Google's terms stated on the configuration page.
  • With a CARTO key, the default base maps (Dark Matter, Positron, Voyager) ask CARTO with it on every request the map makes through MapLibre (style, thumbnails, tiles, sprites and fonts), which keeps CARTO's "API key required" watermark off their thumbnails.
  • A map saved on a keyed base map opens on the default style, with a notice, when its key is missing or refused.
  • A Relief switch in Map Layers on every MapTiler, Esri and Azure Maps base map: MapTiler's own terrain on MapTiler's styles, Mapterhorn's public terrain on Esri's and Azure's.
  • A sky over the horizon once the map is tilted far enough to show it, on every base map but Google's and No Basemap, the free ones included: a day sky on light maps and imagery, a night sky on dark maps. With Relief on, a haze fades the far relief into it. The labels moved to the top in Map Layers are drawn without it, so it never covers the data.
  • 3D layers from Google Photorealistic 3D Tiles, added from a "3D (Plus)" tab in Add Data and drawn with the organisation's key, which no dashboard saves, with Google's logo and the copyright of the view on the map. Cesium ion assets are not in this version; a map saved with one says so.

Places without coordinates

  • Cloud regions and zones (AWS, GCP, Azure), k6 load zones, airports and CDN POPs, and geohashes become points and flows; countries and IP addresses become a choropleth by country. Detected by column name and checked against the values, with a Places option per query. Prometheus series labelled with a place work without "Format: Table".
  • Countries and IP addresses drawn as bubbles at each country, on request (Places → Draw as), sized by their count, sum or average. IP bubbles of a query with a time column are counted per step of time, so kepler's time filter plays them.
  • States and provinces (every country) and counties, cantons and municipalities (178 countries), by ISO 3166-2 code or by name, with the row's country from a column or from the Places → Country option, drawn as a choropleth or as bubbles.

Alerts and links

  • Active alerts on the map: firing and pending alerts you can see, from Grafana and from Prometheus, Loki or Mimir rulers, placed by their region, site, geohash or coordinates labels, with a label filter.
  • Health-coloured probes: a placed query whose first number is named failing draws green while healthy and red when failing, besides being sized by it.
  • Link queries (a node graph's nodes/edges frames, or a single frame with source/target label columns) draw as lines between their Places-resolved ends, coloured by the query's metric thresholds, with alerts kept on top.
  • Named dots at each link's ends and its metric, formatted with its unit, at the midpoint, and a line width that follows the metric, for a weathermap look with no styling of your own.

Layers

  • Gauge: each site draws as a ring filled to its value's fraction of a maximum (auto, which is 1 when every value is at most 1 and 100 otherwise, or a number), with the percentage at its centre, coloured by kepler's colour range; or as a thermometer, a tank, a battery, a drop or any catalogue icon that fills to its value, standing upright in 3D and set beside its point with a leader line.
  • 3D Shape: each point rises as a box, a cylinder, or a hexagonal or triangular prism, its height and colour from one metric or two, sized in pixels or in metres.
  • Coverage: one sector per row, from its azimuth, beamwidth and range (fixed or from a column), with an optional inner radius and a fade towards the edge, for antennas, cameras, radars and lights; with its 3D dome switch on, the sectors rise as stepped domes or cones.
  • Surface: coloured bands and isolines drawn from points, either interpolated between sensors (inverse distance weighting, from each sensor's last reading in the time window) or counting the points within a radius of each place, each vehicle once. Fixed breaks keep frames comparable while the time filter plays.
  • Sparkline: each station draws a card with its series over the dashboard's time range and its current value in its band's colour. Cards are placed without overlapping, worst band first, and the rest show on hover or once pinned; pins are saved with the map. A station silent for three of its own intervals turns red with "No data" and a blinking button. The cards follow Grafana's shared crosshair, with the reading at that instant, and with Card hover drives graphs, hovering a card's chart moves the dashboard graphs' crosshair.
  • Traffic, for link queries: each threshold-coloured line carries comets running from source to target, faster where a field you pick (the link metric by default) is higher, paused off-screen, in a background tab and when the system asks for less motion. Two-way links draw as Lanes (two facing arcs) or Split (weathermap halves), from A→B/B→A row pairs or from one row with reverse colour, width and speed fields.
  • Pipeline: the Traffic flow along a real route, from a line geometry column (GeoJSON, WKT or WKB), with its direction, speed and width from the metric and an optional height above the ground.
  • Traffic and Pipeline flows have a Timing: Together, Random or Wave.
  • Per place (All, Last, Min, Max) on Gauge, 3D Shape and Coverage keeps one mark per place, or per asset, when a query returns many rows for it, and a moving asset glides between its reports.
  • History in the popup on Gauge, 3D Shape, Coverage, Traffic and Pipeline: hovering a mark shows its readings over the dashboard's time range, and a click pins a larger chart.

Fleet

  • Each vehicle, vessel, aircraft or device once, at its position now, turned to its heading, in its status colour, with a fading trail; an asset silent for too long turns grey. Live or History time reference.
  • In 3D, a bundled model picked from the asset's type (Kenney's and Quaternius' CC0 kits, and an airliner, a light aircraft, a helicopter and a drone of our own, flown at their altitude) or a model of your own.
  • A card with the clicked or hovered asset's status, speed, a chart of its speed or any numeric column and a status band, over a window you choose (the remembered positions, the last minutes or the whole track), pinned with a click.
  • A camera that follows an asset: Follow, Orbit, Chase, or Custom, which keeps the zoom, tilt and angle you set with the wheel or a ctrl-drag as the asset turns.
  • A Trips trail mode, drawn as kepler's Trip layer draws its tail: hours or days long, across silences (optionally broken at gaps over a set number of hours), with the asset gliding along it.
  • Predict between refreshes on a live layer: a moving asset keeps going at the course, climb and speed of its latest positions until the next refresh brings its fix, instead of waiting and then jumping.

The rest of the dashboard

  • A click on a Plus layer reaches the panel's click variables and is ringed on the map, and a polygon drawn with kepler's draw tool filters Gauge, 3D Shape, Coverage, Surface, Sparkline and Fleet.
  • Grafana Assistant skills for the Plus map: the Plus layers, linking the map to the rest of the dashboard, and building a dashboard around a map.
  • One template dashboard, installed with the app: Kepler Plus layer tour, five maps of the main layers (Gauge, 3D Shape and Traffic on a power grid; Fleet and Coverage in 3D over a city; Sparkline cards with a shared crosshair; a Surface; Regions by name) on synthetic rows from Grafana's TestData data source, so it works with nothing else set up.
  • The side panel's header shows the Plus logo and name, with "Plus · powered by kepler.gl" under them.
  • The end-user licence agreement and the privacy policy ship inside the plugin, as EULA.md and PRIVACY.md, and the catalogue page links them with the documentation.

Insights

  • Adoption

    Running on 12 active Grafana instances.

  • Activity

    Last updated 23 Oct 2026.

    1 release in the past year.

Version
1.4.1
Dependencies
  • Grafana >=12.0.10 <12.1 || >=12.1.7 <12.2 || >=12.2.5
Developer
UBICA

Grafana Cloud

Connect any plugin in Grafana Cloud.

  • 150+ data source integrations
  • Grafana Assistant - AI that correlates your data, builds queries, and answers questions
  • 10k Prometheus metrics + 50 GB logs, traces, and profiles on the free tier
  • ...and more
Create free account