Skip to contents

Leaflet.glify is a WebGL renderer plugin for leaflet. See https://github.com/robertleeplummerjr/Leaflet.glify for details and documentation.

Usage

addGlPolylines(
  map,
  data,
  color = cbind(0, 0.2, 1),
  opacity = 0.6,
  group = "glpolylines",
  popup = NULL,
  label = NULL,
  weight = 1,
  layerId = NULL,
  src = FALSE,
  pane = "overlayPane",
  popupOptions = NULL,
  labelOptions = NULL,
  contextMenu = NULL,
  ...
)

addGlPoints(
  map,
  data,
  fillColor = "#0033ff",
  fillOpacity = 0.8,
  radius = 10,
  group = "glpoints",
  popup = NULL,
  label = NULL,
  layerId = NULL,
  src = FALSE,
  pane = "overlayPane",
  popupOptions = NULL,
  labelOptions = NULL,
  contextMenu = NULL,
  ...
)

addGlPolygons(
  map,
  data,
  color = cbind(0, 0.2, 1),
  fillColor = color,
  fillOpacity = 0.8,
  group = "glpolygons",
  popup = NULL,
  label = NULL,
  layerId = NULL,
  src = FALSE,
  pane = "overlayPane",
  stroke = TRUE,
  popupOptions = NULL,
  labelOptions = NULL,
  contextMenu = NULL,
  ...
)

Arguments

map

a map widget object created from leaflet()

data

sf/sp point/polygon/line data to add to the map.

color

Object representing the color. Can be of class integer, character with color names, HEX codes or random characters, factor, matrix, data.frame, list, json or formula. See the examples or makeColorMatrix for more information.

opacity

feature opacity. Numeric between 0 and 1. Note: expect funny results if you set this to < 1.

group

the name of the group the newly created layers should belong to (for clearGroup and addLayersControl purposes). Human-friendly group names are permitted–they need not be short, identifier-style names. Any number of layers and even different types of layers (e.g. markers and polygons) can share the same group name.

popup

Object representing the popup. Can be of type character with column names, formula, logical, data.frame or matrix, Spatial, list or JSON. If the length does not match the number of rows in the data, the popup vector is repeated to match the dimension.

label

a character vector of the HTML content for the labels

weight

line width/thickness in pixels for addGlPolylines.

layerId

the layer id

src

whether to pass data to the widget via file attachments.

pane

A string which defines the pane of the layer. The default is "overlayPane".

popupOptions

A Vector of popupOptions to provide popups

labelOptions

A Vector of labelOptions to provide label options for each label. Default NULL

contextMenu

a JS function, that is passed to contextmenu. See the example in ./inst/examples/contextmenu.R

...

Used to pass additional named arguments to write_json_str or write_geojson_str & to pass additional arguments to the underlying JavaScript functions. Typical use-cases include setting 'digits' to round the point coordinates or to pass a different 'fragmentShaderSource' to control the shape of the points. Use

  • 'point' (default) to render circles with a thin black outline

  • 'simpleCircle' for circles without outline

  • 'square' for squares without outline

Additional arguments could be 'sensitivity', 'sensitivityHover' or 'vertexShaderSource'. See a full list at the Leaflet.glify repository.

fillColor

fill color

fillOpacity

fill opacity

radius

point size in pixels.

stroke

whether to draw stroke along the path (e.g. the borders of polygons or circles)

Functions

  • addGlPolylines(): Add Lines to a leaflet map using Leaflet.glify

  • addGlPoints(): Add Points to a leaflet map using Leaflet.glify

  • addGlPolygons(): Add Polygons to a leaflet map using Leaflet.glify

Note

MULTILINESTRINGs and MULTIPOLYGONs are currently not supported! Make sure you cast your data to LINESTRING or POLYGON first using:

  • sf::st_cast(data, "LINESTRING")

  • sf::st_cast(data, "POLYGON")

Shiny Inputs

The objects created with leafgl send input values to Shiny as the user interacts with them. These events follow the pattern input$MAPID_glify_EVENTNAME. The following events are available:

  • Click Events: input$MAPID_glify_click

  • Mouseover Events: input$MAPID_glify_mouseover

  • Mouseout Events: input$MAPID_glify_mouseout

Each event returns a list containing:

  • lat: Latitude of the object or mouse cursor

  • lng: Longitude of the object or mouse cursor

  • id: The layerId, if any

  • group: The group name of the object

  • data: The properties of the feature

Examples

library(leaflet)
library(leafgl)
library(sf)
#> Linking to GEOS 3.12.1, GDAL 3.8.4, PROJ 9.4.0; sf_use_s2() is TRUE

storms = st_as_sf(atlStorms2005)
#> Loading required namespace: sp
cols = heat.colors(nrow(storms))

leaflet() %>%
  addProviderTiles(provider = providers$CartoDB.Positron) %>%
  addGlPolylines(data = storms, color = cols, popup = TRUE, opacity = 1)
# \donttest{ library(leaflet) library(leafgl) library(sf) n = 1e5 df1 = data.frame(id = 1:n, x = rnorm(n, 10, 1), y = rnorm(n, 49, 0.8)) pts = st_as_sf(df1, coords = c("x", "y"), crs = 4326) cols = topo.colors(nrow(pts)) leaflet() %>% addProviderTiles(provider = providers$CartoDB.DarkMatter) %>% addGlPoints(data = pts, fillColor = cols, popup = TRUE)
# } library(leaflet) library(leafgl) library(sf) gadm = st_as_sf(gadmCHE) gadm = st_cast(gadm, "POLYGON") #> Warning: repeating attributes for all sub-geometries for which they may not be constant cols = grey.colors(nrow(gadm)) leaflet() %>% addProviderTiles(provider = providers$CartoDB.DarkMatter) %>% addGlPolygons(data = gadm, color = cols, popup = TRUE)