The Polygon Layer renders filled and/or stroked polygons.
add_polygon(
map,
data = get_map_data(map),
polyline = NULL,
stroke_colour = NULL,
stroke_width = NULL,
stroke_opacity = NULL,
fill_colour = NULL,
fill_opacity = NULL,
elevation = NULL,
tooltip = NULL,
auto_highlight = FALSE,
elevation_scale = 1,
highlight_colour = "#AAFFFFFF",
light_settings = list(),
layer_id = NULL,
id = NULL,
palette = "viridis",
na_colour = "#808080FF",
legend = FALSE,
legend_options = NULL,
legend_format = NULL,
update_view = TRUE,
focus_layer = FALSE,
digits = 6,
transitions = NULL,
brush_radius = NULL,
...
)
a mapdeck map object
data to be used in the layer. All coordinates are expected to be EPSG:4326 (WGS 84) coordinate system
optional column of data
containing the polylines, if using encoded polylines
variable of data
or hex colour for the stroke. If used,
elevation
is ignored.
If using a hex colour, use either a single value, or a column of hex colours on data
width of the stroke in meters. If used, elevation
is ignored. Default 1.
Either a string specifying the column of data
containing the opacity of each shape, or a single value in [0,255], or [0, 1),
to be applied to all the shapes. Default 255. If a hex-string is used as the
colour, this argument is ignored and you should include the alpha on the hex string
column of data
or hex colour for the fill colour.
If using a hex colour, use either a single value, or a column of hex colours on data
Either a string specifying the column of data
containing the opacity of each shape, or a single value in [0,255], or [0, 1),
to be applied to all the shapes. Default 255. If a hex-string is used as the
colour, this argument is ignored and you should include the alpha on the hex string
the height the polygon extrudes from the map. Only available if neither
stroke_colour
or stroke_width
are supplied. Default 0
variable of data
containing text or HTML to render as a tooltip
logical indicating if the shape under the mouse should auto-highlight
elevation multiplier.
hex string colour to use for highlighting. Must contain the alpha component.
list of light setting parameters. See light_settings
single value specifying an id for the layer. Use this value to distinguish between shape layers of the same type. Layers with the same id are likely to conflict and not plot correctly
an id value in data
to identify layers when interacting in Shiny apps.
string or matrix. String will be one of colourvalues::colour_palettes()
.
A matrix must have at least 5 rows, and 3 or 4 columns of values between [0, 255],
where the 4th column represents the alpha. You can use a named list to specify a different
palette for different colour options (where available),
e.g. list(fill_colour = "viridis", stroke_colour = "inferno")
hex string colour to use for NA values
either a logical indiciating if the legend(s) should be displayed, or a named list indicating which colour attributes should be included in the legend.
A list of options for controlling the legend.
A list containing functions to apply to legend values. See section legend
logical indicating if the map should update the bounds to include this layer
logical indicating if the map should update the bounds to only include this layer
number of digits for rounding coordinates
list specifying the duration of transitions.
radius of the brush in metres. Default NULL. If supplied, the arcs will only show if the origin or destination are within the radius of the mouse. If NULL, all arcs are displayed
clear_legend
and clear_view
arguments passed to 'clear_()' functions
If the data
is a simple feature object, the geometry column is automatically
detected. If the sf object contains more than one geometry column and you want to use a specific one,
you'll need to set the active geometry using sf::st_geometry( x ) <- "your_column"
,
where "your_column"
is the name of the column you're activating. See ?sf::st_geometry
The transitions argument lets you specify the time it will take for the shapes to transition from one state to the next. Only works in an interactive environment (Shiny) and on WebGL-2 supported browsers and hardware.
The time is in milliseconds
Available transitions for polygon
list( polygon = 0, fill_colour = 0, stroke_colour = 0, stroke_width = 0, elevation = 0 )
The legend_options
can be used to control the appearance of the legend.
This should be a named list, where the names are one of
css - a string of valid css
for controlling the appearance of the legend
title - a string to use for the title of the legend
digits - number to round the legend values to
If the layer allows different fill and stroke colours, you can use different options for each. See examples in add_arc.
The legend_format
can be used to control the format of the values in the legend.
This should be a named list, where the names are one of
fill_colour
stroke_colour
depending on which type of colouring the layer supports.
The list elements must be functions to apply to the values in the legend.
The id
is returned to your R session from an interactive shiny environment
by observing layer clicks. This is useful for returning the data.frame row relating to the
cliked shape.
From within a shiny server you would typically use observeEvent({input$map_arc_click})
,
where 'map' is the map_id supplied to mapdeckOutput()
, and 'arc' is the layer
you are clicking on
add_polygon
supports POLYGON and MULTIPOLYGON sf objects
# \donttest{
## You need a valid access token from Mapbox
key <- 'abc'
set_token( key )
library(geojsonsf)
sf <- geojsonsf::geojson_sf("https://symbolixau.github.io/data/geojson/SA2_2016_VIC.json")
mapdeck(
style = mapdeck_style('dark')
) %>%
add_polygon(
data = sf
, layer = "polygon_layer"
, fill_colour = "SA2_NAME16"
)
df <- melbourne ## data.frame with encoded polylnies
df$elevation <- sample(100:5000, size = nrow(df))
df$info <- paste0("SA2 - ",df$SA2_NAME)
mapdeck(
style = mapdeck_style('dark')
, location = c(145, -38)
, zoom = 8
) %>%
add_polygon(
data = df
, polyline = "geometry"
, layer = "polygon_layer"
, fill_colour = "SA2_NAME"
, elevation = "elevation"
, tooltip = 'info'
, legend = TRUE
)
# }
Run the code above in your browser using DataLab