Add Data to a leaflet map using Leaflet.glify
Source:R/glify-lines.R
, R/glify-points.R
, R/glify-polygons.R
addGlPoints.Rd
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
andaddLayersControl
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. DefaultNULL
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
orwrite_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.glifyaddGlPoints()
: Add Points to a leaflet map using Leaflet.glifyaddGlPolygons()
: 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 cursorlng
: Longitude of the object or mouse cursorid
: The layerId, if anygroup
: The group name of the objectdata
: 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)