The LeafletPlayback plugin provides the ability to replay GPS Points in the form of POINT Simple Features. Rather than simply animating a marker along a polyline, the speed of the animation is synchronized to a clock. The playback functionality is similar to a video player; you can start and stop playback or change the playback speed.
Usage
addPlayback(
map,
data,
time = "time",
icon = NULL,
pathOpts = pathOptions(),
popup = NULL,
label = NULL,
popupOptions = NULL,
labelOptions = NULL,
options = playbackOptions(),
name = NULL
)
Arguments
- map
a map widget
- data
data must be a POINT Simple Feature or a list of POINT Simple Feature's with a time column.
- time
The column name of the time column. Default is
"time"
.- icon
an icon which can be created with
makeIcon
- pathOpts
style the CircleMarkers with
pathOptions
- popup
A formula with the column names for the popup content
- label
A formula with the column names for the label content
- popupOptions
A Vector of
popupOptions
to provide popups- labelOptions
A Vector of
labelOptions
to provide label options for each label. DefaultNULL
- options
List of additional options. See
playbackOptions
- name
A formula with the column names for the feature name
See also
Other Playback Functions:
playbackOptions()
,
removePlayback()
Examples
library(leaflet)
library(leaflet.extras2)
library(sf)
## Single Elements
data <- sf::st_as_sf(leaflet::atlStorms2005[1, ])
data <- st_cast(data, "POINT")
#> Warning: repeating attributes for all sub-geometries for which they may not be constant
data$time <- as.POSIXct(
seq.POSIXt(Sys.time() - 1000, Sys.time(), length.out = nrow(data))
)
data$label <- as.character(data$time)
leaflet() %>%
addTiles() %>%
addPlayback(
data = data, label = ~label,
popup = ~ sprintf(
"I am a popup for <b>%s</b> and <b>%s</b>",
Name, label
),
popupOptions = popupOptions(offset = c(0, -35)),
options = playbackOptions(
radius = 3,
tickLen = 36000,
speed = 50,
maxInterpolationTime = 1000
),
pathOpts = pathOptions(weight = 5)
)
## Multiple Elements
data <- sf::st_as_sf(leaflet::atlStorms2005[1:5, ])
data$Name <- as.character(data$Name)
data <- st_cast(data, "POINT")
#> Warning: repeating attributes for all sub-geometries for which they may not be constant
data$time <- unlist(lapply(rle(data$Name)$lengths, function(x) {
seq.POSIXt(as.POSIXct(Sys.Date() - 2), as.POSIXct(Sys.Date()), length.out = x)
}))
data$time <- as.POSIXct(data$time, origin = "1970-01-01")
data$label <- paste0("Time: ", data$time)
data$popup <- sprintf(
"<h3>Customized Popup</h3><b>Name</b>: %s<br><b>Time</b>: %s",
data$Name, data$time
)
data <- split(data, f = data$Name)
leaflet() %>%
addTiles() %>%
addPlayback(
data = data,
popup = ~popup,
label = ~label,
popupOptions = popupOptions(offset = c(0, -35)),
labelOptions = labelOptions(noHide = TRUE),
options = playbackOptions(
radius = 3,
tickLen = 1000000,
speed = 5000,
maxInterpolationTime = 10000,
transitionpopup = FALSE,
transitionlabel = FALSE,
playCommand = "Let's go",
stopCommand = "Stop it!",
color = c(
"red", "green", "blue",
"orange", "yellow"
)
),
pathOpts = pathOptions(weight = 5)
)