Create and customize interactive maps using the 'Leaflet' JavaScript library and the 'htmlwidgets' package. These maps can be used directly from the R console, from 'RStudio', in Shiny applications and R Markdown documents.
Leaflet is an open-source JavaScript library for interactive maps. This R package makes it easy to create Leaflet maps from R.
library(leaflet)m = leaflet() %>% addTiles()m # a map with the default OSM tile layer m = m %>% setView(-93.65, 42.0285, zoom = 17)m m %>% addPopups(-93.65, 42.0285, 'Here is the <b>Department of Statistics</b>, ISU')
You can install this package from CRAN, or the development version from Github:
# CRAN versioninstall.packages('leaflet') # Or Github versionif (!require('devtools')) install.packages('devtools')devtools::install_github('rstudio/leaflet')
In addition to the usual R package documentation, we also have extensive docs and examples at: http://rstudio.github.io/leaflet You may use Github issues to file bug reports or feature requests, and ask questions on StackOverflow or in the Shiny mailing list.
To make additions or modifications to the JavaScript htmlwidgets binding layer, you must use Grunt to build and test. Please make sure Node.js is installed on your system, then run:
npm install -g grunt-cli
npm install
Now you can build/minify/lint/test using grunt build
, or run in "watch" mode
by just running grunt
. JS sources go into javascript/src
and tests go into
javascript/tests
.
This package is licensed to you under the terms of the GNU General Public License version 3 or later.
Copyright 2013-2015 RStudio, Inc.
BUG FIXES and IMPROVEMENTS
FEATURES
addMapPane
to add custom pane layers to have fine tune control over layer ordering. New feature from within leaflet.js v1.x. (#549)BUG FIXES and IMPROVEMENTS
.leaflet-map-pane
z-index
switched to 'auto'. Allows for map panes to appear above the map if they appear later in the dom. (#537)BREAKING CHANGES
Update to latest leaflet.js v1.3.1 (#453, 314616f) Please see http://leafletjs.com/reference-1.3.0.html for the latest documentation
All plugins updated to versions compatible with leaflet > 1.0 (#458)
Leaflet.label (https://github.com/Leaflet/Leaflet.labelExtension)
L.Label
has been adopted within Leaflet.js to L.Tooltip
*.bindLabel()
to *.bindTooltip()
BUG FIXES AND FEATURES
Relative protocols are used where possible when adding tiles (#526). In RStudio 1.1.x on linux and windows, a known issue of 'https://' routes fail to load, but works within browsers (rstudio/rstudio#2661).
Added more providers for addProviderTiles()
: "OpenStreetMap.CH", "OpenInfraMap", "OpenInfraMap.Power", "OpenInfraMap.Telecom", "OpenInfraMap.Petroleum", "OpenInfraMap.Water", "OpenPtMap", "OpenRailwayMap", "OpenFireMap", "SafeCast". (4aea447)
L.multiPolyline
was absorbed into L.polyline
, which accepts multiple an array of polyline information. http://leafletjs.com/reference-1.3.0.html#polyline. (#515)
Fix bug where icons where anchored to the top-center, not center-center (2a60751)
Fix bug where markers would not appear in self contained knitr files (cc79bc3)
leaflet-label plugin now L.tooltip in leaflet.js. labelOptions() now translates old options clickable to interactive and noHide to permanent.
Fix a bug where the default addTiles()
would not work with .html files
served directly from the filesystem.
Add groupOptions
function. Currently the only option is letting you specify
zoom levels at which a group should be visible.
Fix bug with accessing columns in formulas when the data source is a Crosstalk SharedData object wrapping a spatial data frame or sf object.
Fix strange wrapping behavior for legend, especially common for Chrome when browser zoom level is not 100%.
Fix incorrect opacity on NA entry in legend. (PR #425)
Added support for drag events (#405)
Ensure type safety of .indexOf(stamp) (#396)
validateCoords()
warns on invalid polygon data (#393)
Added method
argument to addRasterImage()
to enable nearest neighbor interpolation when projecting categorical rasters (#462)
Added an 'auto'
method for addRasterImage()
. Projected factor results are coerced into factors. (9accc7e)
Added data
parameter to remaining addXXX()
methods, including addLegend. (f273edd, #491, #485)
Added preferCanvas
argument to leafletOptions()
(#521)
Add support for sf. sf, sfc, and sfg classes are supported with POINT, LINESTRING, MULTILINESTRING, POLYGON, and MULTIPOLYGON geometries (note that MULTIPOINT is not currently supported).
Added support for Crosstalk (https://rstudio.github.io/crosstalk/).
Added option to highlight polygons, polylines, circles, and rectangles on hover (use highlightOptions parameter).
Fix behavior when data contains NA points, or zero rows. Previously this would cause an error.
Added popupOptions
parameter to all markers and shape layers.
Upgraded existing plugins to their respective latest versions and added missing/new functionality from those plugins. (PR #293)
Added Proj4Leaflet plugin (PR #294).
Added EasyButton plugin (PR #295).
Added Graticule plugin (PR #293).
Color palette improvements. All color palette functions now support viridis palettes ("viridis", "magma", "inferno", and "plasma").
Color palette functions now support reversing the order in which colors are used, via reverse=TRUE.
colorFactor
no longer interpolates qualitative RColorBrewer palettes,
unless the number of factor levels being mapped exceeds the number of colors
in the specified RColorBrewer palette. (Issue #300)
Upgrade leaflet.js to 0.7.7.1 (PR #359)
Added a way for the Map instance to be instantiated via a factory.
When used with leafletProxy
, fitBounds
did not return its input object as
output, so magrittr chains would break after fitBounds
was called.
Add addMeasure()/removeMeasure() functions to allow users to measure lines and areas, via the leaflet-measure plugin by @ljagis. (PR #171. Thanks, Kenton Russell!)
Add input${mapid}_center
Shiny event.
Add support for labels on most layers, that show either statically or on hover. (PR #181. Thanks Bhaskar Karambelkar!)
Add support for markers with configurable colors and icons, via the
Leaflet.awesome-markers plugin by @lvoogdt. See ?addAwesomeMarkers
.
(PR #184. Great work, Bhaskar!)
Add support for the Leaflet.Terminator plugin by @joergdietrich. Overlays
day and night regions on a map. See ?addTerminator
. (PR #184, thanks
Bhaskar!)
Add support for Leaflet.SimpleGraticule plugin by @ablakey. See
?addSimpleGraticule
. (PR #184, thanks again Bhaskar!)
Add support for Leaflet.MagnifyingGlass plugin by @bbecquet. Adds a
configurable magnifying glass that displays the area under the cursor at an
increased zoom level. See ?addMagnifyingGlass
. (PR #184, still Bhaskar!)
Add support for Leaflet-MiniMap plugin by @Norkart. Adds a mini map to the
corner that can be used to see or change the bounds of the main map. See
?addMiniMap
. (PR #184, Bhaskar again!)
addScaleBar
and related functions added, for showing Leaflet's built-in
scale bar in one of the corners of the map. (PR #201. Thanks Kent Johnson!)