這篇是主要在於學習Spatial Analysis,主要參考 https://rstudio.github.io/leaflet/shapes.html 仿作一次!
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.6.1
## Registered S3 method overwritten by 'rvest':
## method from
## read_xml.response xml2
## -- Attaching packages -------------------------------------- tidyverse 1.2.1 --
## √ ggplot2 3.2.1 √ purrr 0.3.2
## √ tibble 2.1.1 √ dplyr 0.8.3
## √ tidyr 1.0.0 √ stringr 1.4.0
## √ readr 1.3.1 √ forcats 0.4.0
## Warning: package 'ggplot2' was built under R version 3.6.1
## Warning: package 'tidyr' was built under R version 3.6.1
## Warning: package 'dplyr' was built under R version 3.6.1
## -- Conflicts ----------------------------------------- tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(leaflet)
## Warning: package 'leaflet' was built under R version 3.6.2
library(leaflet.providers)
## Warning: package 'leaflet.providers' was built under R version 3.6.2
#Basic map
m <- leaflet() %>%
addTiles() %>% # Add default OpenStreetMap map tiles
addMarkers(lng=121.539570, lat=23.892704, popup="NDHU")
m
#Base 1 in Boston
n <- leaflet() %>% setView(lng = -71.0589, lat = 42.3601, zoom = 12)
n %>% addTiles()
n %>% addProviderTiles(providers$Stamen.Toner)
#different tiles
n %>% addProviderTiles(providers$CartoDB.Positron)
n %>% addProviderTiles(providers$Esri.NatGeoWorldMap)
n %>% addProviderTiles(providers$MtbMap) %>%
addProviderTiles(providers$Stamen.TonerLines,
options = providerTileOptions(opacity = 0.55)) %>%
addProviderTiles(providers$Stamen.TonerLabels)
n %>% addProviderTiles(providers$Esri.NatGeoWorldMap)
#marker
leaflet(data = quakes[1:20,]) %>% addTiles() %>%
addMarkers(~long, ~lat, popup = ~as.character(mag), label = ~as.character(mag))
df.20 <- quakes[1:20,]
getColor <- function(quakes) {
sapply(quakes$mag, function(mag) {
if(mag <= 4) {
"green"
} else if(mag <= 5) {
"orange"
} else {
"red"
} })
}
icons <- awesomeIcons(
icon = 'ios-close',
iconColor = 'black',
library = 'ion',
markerColor = getColor(df.20)
)
leaflet(df.20) %>% addTiles() %>%
addAwesomeMarkers(~long, ~lat, icon=icons, label=~as.character(mag))
#Cluster
leaflet(quakes) %>% addTiles() %>% addMarkers(
clusterOptions = markerClusterOptions()
)
## Assuming "long" and "lat" are longitude and latitude, respectively
#pop up
content <- paste(sep = "<br/>",
"<b><a href='https://www.ndhu.edu.tw/'>NDHU</a></b>",
"花蓮縣壽豐鄉大學路二段一號",
"+886-3-890-3000?"
)
leaflet() %>% addTiles() %>%
addPopups(121.539570, 23.892704, content,
options = popupOptions(closeButton = FALSE)
)
library(htmltools)
df <- read.csv(textConnection(
"Name,Lat,Long
Samurai Noodle,47.597131,-122.327298
Kukai Ramen,47.6154,-122.327157
Tsukushinbo,47.59987,-122.326726"
))
leaflet(df) %>% addTiles() %>%
addMarkers(~Long, ~Lat, popup = ~htmlEscape(Name))