Maps are apart of our everyday lives. They can be seen in almost every industry and are useful for numerous different purposes. A lot of the time these maps are static. Sometimes, however, it’s extremely useful to interact with the data on the map. This is where the Leaflet package comes in. This post will go over what the
Leaflet package is and provide some useful tips on how to make your new interactive map shine.
Leaflet is an open-source
Leaflet is that it’s super easy to learn and there’s so many tutorials out there to help you. Luckily, instead of having to learn
Leaflet package. This R package makes it extremely easy to integrate and control
Leaflet maps in R.
Before we jump headfirst into some of the tips, I believe you must go over over some material on the
Leaflet package in R. This post assumes you know the basics of
Leaflet but just in case someone got here and has no clue what I am talking about here are some resources I found helpful when I first started using the package.
Tip #1: Use the
leaflet.extras package to add extra functionality to your map
leaflet.extras package is a great tool to add some cool features to your map using various Leaflet plugins (Note: Not all the plugins are integrated). I won’t go over all the various plugins, instead, I will show you the functions I use and find most useful.
Reset map’s view to original view
Resetting your map’s view to it’s original view is very simple. It can be done with one function:
library(leaflet) library(leaflet.extras) leaflet(options = leafletOptions(minZoom = 7))%>% addTiles()%>% addResetMapButton()
Adding GPS location (Note: Open the map in a browser not inside Rstudio! Allow the request for location access)
library(leaflet) library(leaflet.extras) map <- leaflet() %>% addTiles() map <- addControlGPS(map, options = gpsOptions(position = "topleft", activate = TRUE, autoCenter = TRUE, maxZoom = 10, setView = TRUE)) activateGPS(map)
Draw features on Leaflet map and have ability to style
library(leaflet) library(leaflet.extras) leaflet() %>% setView(lng = -74.4 ,lat =40, zoom = 8)%>% addTiles() %>% addDrawToolbar( targetGroup='draw', editOptions = editToolbarOptions(selectedPathOptions = selectedPathOptions())) %>% addLayersControl(overlayGroups = c('draw'), options = layersControlOptions(collapsed=FALSE)) %>% addStyleEditor()
A very interesting post on using the
addDrawToolbar() function to select multiple locations on your
leaflet map in
shiny can be seen here Selecting Multiple Locations on a Leaflet Map in R Shiny. Check it out!
Tip #2: Have map zoom into polygon once polygon is clicked in shiny
Adding polygons to a
leaflet map is a very common thing to do in
leaflet. This can be achieved by using the
addPolygons() function. By giving the user the ability to zoom into the polygon, once a polygon is clicked, it makes it a lot easier to focus in on a particular area of the map. However, before we can use the
addPolygons() function we first need to read in a polygon into R! There are many different ways to read in polygons into R but I find the
sf package to be the best. To learn more about the
sf package you can go here for an overview. Here is a minimal example of reading in a polygon into R and adding it to a
library(leaflet) library(sf) wma<-st_read(dsn="/Users/kevinzolea/Desktop/Personal_Website/content/post/Leaflet/",layer = "WMAs") wma<-st_transform(wma,crs="+init=epsg:4326") wma<-st_zm(wma,drop = T, what = "ZM") leaflet() %>% setView(lng = -74.4 ,lat =40, zoom = 7)%>% addTiles() %>% addPolygons(data=wma)
## Reading layer `WMAs' from data source `/Users/kevinzolea/Desktop/Personal_Website/content/post/Leaflet' using driver `ESRI Shapefile' ## Simple feature collection with 21 features and 9 fields ## geometry type: POLYGON ## dimension: XY ## bbox: xmin: 192080.7 ymin: 7556.864 xmax: 667902.7 ymax: 919466.3 ## epsg (SRID): 3424 ## proj4string: +proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9999 +x_0=150000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs