Skip to contents

GPU-accelerated interactive maps for R (MapLibre GL + deck.gl via htmlwidgets).

Documentation: Getting Started + Core Ideas

  • Fast: WebGL rendering with binary (typed-array) attributes for smooth interaction with millions of features.
  • R-native syntax: pipe-friendly add_*() verbs plus formula mappings like radius = ~value.
  • First-class components: views, filters, and summaries are built in - no more layer-control workarounds.
  • Composable UI: bind components into shared controls, and mount them in an optional panel UI.
  • sf-friendly: works naturally with sf objects for points, lines, and polygons.
  • Quarto/R Markdown ready: designed to drop into reports and dashboards.
Demo
Demo

Installation

Install from CRAN:

install.packages("maplamina")

Or install the development version from GitHub:

# install.packages("devtools")
devtools::install_github("jhumbl/maplamina")

Quick start (views)

A minimal example of a layer with multiple views transitioning between different radius sizes, and a GPU-accelerated filter.

set.seed(1)
n <- 2000
d <- data.frame(
  lon   = runif(n, -60, 60),
  lat   = runif(n, -60, 60),
  value = runif(n, 1, 10)
)

maplamina() |>
  add_circles(d, stroke = FALSE, fill_color = "darkblue") |>
  add_views(
    view("Value",         radius = ~value),
    view("Inverse Value", radius = ~(max(value) - value + 1))
  ) |>
  add_filters(
      filter_range(~value)
  )

Layers

Hardware-dependent demo: filtering 10 Million points

maplamina() |>
  add_circles(big_dataset, radius=~value) |>
  add_filters(
    filter_range(~value, live=F)
  )
Demo
Demo

Getting help

Roadmap

Planned improvements include more layer types, additional components, and alternative themes.

License

MIT.