This module provides client-side geospatial operations using the turf.js library. All operations work with both mapboxgl and maplibre proxies. Create a buffer around geometries
Usage
turf_buffer(
  map,
  layer_id = NULL,
  data = NULL,
  coordinates = NULL,
  radius,
  units = "meters",
  source_id,
  input_id = NULL
)Arguments
- map
- A mapboxgl, maplibre, mapboxgl_proxy, or maplibre_proxy object. 
- layer_id
- The ID of a layer or source to buffer (mutually exclusive with data and coordinates). 
- data
- An sf object to buffer (mutually exclusive with layer_id and coordinates). 
- coordinates
- A numeric vector of length 2 with lng/lat coordinates to create a point and buffer (mutually exclusive with layer_id and data). 
- radius
- The buffer distance. 
- units
- The units for the buffer distance. One of "meters", "kilometers", "miles", "feet", "inches", "yards", "centimeters", "millimeters", "degrees", "radians". 
- source_id
- The ID for the new source containing the buffered results. Required. 
- input_id
- Optional. Character string specifying the Shiny input ID suffix for storing results. If NULL (default), no input is registered. For proxy operations, the result will be available as - input[[paste0(map_id, "_turf_", input_id)]].
Details
This function creates a buffer around geometries at a specified distance. The operation is performed client-side using turf.js. The result is added as a source to the map, which can then be styled using add_fill_layer(), add_line_layer(), etc.
Examples
if (FALSE) { # \dontrun{
# Buffer existing layer
map |>
  turf_buffer(layer_id = "points", radius = 1000, units = "meters",
              source_id = "point_buffers") |>
  add_fill_layer(id = "buffers", source = "point_buffers", fill_color = "blue")
# Buffer sf object
map |>
  turf_buffer(data = sf_points, radius = 0.5, units = "miles",
              source_id = "buffers") |>
  add_fill_layer(id = "buffer_layer", source = "buffers")
# Buffer coordinates (great for hover events)
maplibre_proxy("map") |>
  turf_buffer(coordinates = c(-122.4, 37.7), radius = 500, units = "meters",
              source_id = "hover_buffer")
} # }
