library(leaflet)
#' Add a Level factor to quakes
quakes <- quakes %>%
dplyr::mutate(mag.level = cut(mag, c(3, 4, 5, 6),
labels = c(">3 & <=4", ">4 & <=5", ">5 & <=6")))
l <- leaflet() %>% addTiles()
#' <br/><br/>
#' Default Clustering
l %>%
addMarkers(data = quakes, clusterOptions = markerClusterOptions())
#' <br/><br/>
#' Clustering Frozen at level 5
l %>%
addMarkers(data = quakes, clusterOptions = markerClusterOptions(freezeAtZoom = 6))
#' <br/><br/>
#' Clustering of Label Only Clusters
l %>%
addLabelOnlyMarkers(data = quakes,
lng = ~long, lat = ~lat,
label = ~as.character(mag),
clusterOptions = markerClusterOptions(),
labelOptions = labelOptions(noHide = TRUE,
direction = "auto"))
#' <br/><br/>
#' Clustering + Layers
quakes.df <- split(quakes, quakes$mag.level)
l2 <- l
names(quakes.df) %>%
purrr::walk( function(df) {
l2 <<- l2 %>%
addMarkers(data = quakes.df[[df]],
lng = ~long, lat = ~lat,
label = ~as.character(mag),
popup = ~as.character(mag),
group = df,
clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = FALSE),
labelOptions = labelOptions(noHide = TRUE,
direction = "auto"))
})
l2 %>%
addLayersControl(
overlayGroups = names(quakes.df),
options = layersControlOptions(collapsed = FALSE)
)
#' <br/><br/>
#' Clustering with custom iconCreateFunction
leaflet(quakes) %>% addTiles() %>%
addMarkers(clusterOptions =
markerClusterOptions(iconCreateFunction =
JS("
function(cluster) {
return new L.DivIcon({
html: '<div style=\"background-color:rgba(77,77,77,0.5)\"><span>' + cluster.getChildCount() + '</div><span>',
className: 'marker-cluster'
});
}")))
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.