這篇是主要在於學習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))