準備
library(leaflet) # ライブラリの読み込み
library(ggmap)
library(dplyr)
library(knitr)
library(DT)
leaflet() %>%
  addTiles(urlTemplate = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png") %>%  # オープンストリートマップ
  setView(lng = 140,lat = 36, zoom = 9)  # 初期表示位置(省略可)
マーク用データの準備
df <- data.frame(
  id = 1:50,
  lng = rnorm(50, mean = 140, sd = 0.5),
  lat = rnorm(50, mean = 36,  sd = 0.5),
  group = rep(c("groupA", "groupB"), 25),
  pop = paste0("pop ", 1:50, "!"),
  label = paste0("label ", 1:50, "!")
)
knitr::kable(head(df))
| id | lng | lat | group | pop | label | 
|---|---|---|---|---|---|
| 1 | 139.9243 | 36.44596 | groupA | pop 1! | label 1! | 
| 2 | 139.7237 | 35.62759 | groupB | pop 2! | label 2! | 
| 3 | 139.9773 | 36.45864 | groupA | pop 3! | label 3! | 
| 4 | 139.6034 | 36.44415 | groupB | pop 4! | label 4! | 
| 5 | 139.0843 | 35.82925 | groupA | pop 5! | label 5! | 
| 6 | 140.0365 | 35.83830 | groupB | pop 6! | label 6! | 
# マーク用データの入力
base.map <- leaflet(df) %>%
  addTiles(urlTemplate = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png") 
base.map %>%
addMarkers(lng = ~lng, lat = ~lat,
           popup = ~pop,
           label = ~label)
base.map %>%
addCircles(lng = ~lng, lat = ~lat,
           radius = 1000,  #半径(メートル単位)
           color = "#09f",
           weight = 20)  # 線幅
base.map %>%
addPopups(lng = ~lng, lat = ~lat,
          popup = ~pop)
base.map %>%
  addMarkers(lng = ~lng, lat = ~lat, popup = ~pop, group = "groupA",
             data = filter(.data = df, group == "groupA")) %>%
  addMarkers(lng = ~lng, lat = ~lat, popup = ~pop, group = "groupB",
             data = filter(.data = df, group == "groupB")) %>%
  addLayersControl(overlayGroups = c("groupA","groupB"),
                   options = layersControlOptions(collapsed = FALSE))
df <-read.csv("library.csv",  stringsAsFactors = FALSE)
kable(head(df))
| id | name | group | locate | url | 
|---|---|---|---|---|
| 1 | 杉並区立柿木図書館 | 図書館(地域) | 東京都杉並区上井草1-6-13 | https://www.library.city.suginami.tokyo.jp | 
| 2 | 杉並区立今川図書館 | 図書館(地域) | 東京都杉並区今川4-12-10 | https://www.library.city.suginami.tokyo.jp | 
| 3 | 杉並区立南荻窪図書館 | 図書館(地域) | 東京都杉並区南荻窪1-10-2 | https://www.library.city.suginami.tokyo.jp | 
| 4 | 杉並区立高井戸図書館 | 図書館(地域) | 東京都杉並区高井戸東1-28-1 | https://www.library.city.suginami.tokyo.jp | 
| 5 | 杉並区立宮前図書館 | 図書館(地域) | 東京都杉並区宮前5-5-27 | https://www.library.city.suginami.tokyo.jp | 
| 6 | 杉並区立成田図書館 | 図書館(地域) | 東京都杉並区成田東3-28-5 | https://www.library.city.suginami.tokyo.jp | 
lnla <- geocode(df$locate)
df$lng <- lnla$lon
df$lat <- lnla$lat
kable(head(df))
| id | name | group | locate | url | lng | lat | 
|---|---|---|---|---|---|---|
| 1 | 杉並区立柿木図書館 | 図書館(地域) | 東京都杉並区上井草1-6-13 | https://www.library.city.suginami.tokyo.jp | 139.6121 | 35.72025 | 
| 2 | 杉並区立今川図書館 | 図書館(地域) | 東京都杉並区今川4-12-10 | https://www.library.city.suginami.tokyo.jp | 139.5999 | 35.71557 | 
| 3 | 杉並区立南荻窪図書館 | 図書館(地域) | 東京都杉並区南荻窪1-10-2 | https://www.library.city.suginami.tokyo.jp | NA | NA | 
| 4 | 杉並区立高井戸図書館 | 図書館(地域) | 東京都杉並区高井戸東1-28-1 | https://www.library.city.suginami.tokyo.jp | NA | NA | 
| 5 | 杉並区立宮前図書館 | 図書館(地域) | 東京都杉並区宮前5-5-27 | https://www.library.city.suginami.tokyo.jp | 139.5989 | 35.69322 | 
| 6 | 杉並区立成田図書館 | 図書館(地域) | 東京都杉並区成田東3-28-5 | https://www.library.city.suginami.tokyo.jp | NA | NA | 
df$pop <- paste0(df$name, '<br><a href = "', df$url, '"> link </a>')
group_list <- unique(df$group)
leaflet() %>%
  addTiles(urlTemplate = "https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png") %>%
  addMarkers(lng = ~lng, lat = ~lat, popup = ~pop, group = group_list[1],
             data = filter(.data = df, group == group_list[1])) %>%
  addMarkers(lng = ~lng, lat = ~lat, popup = ~pop, group = group_list[2],
             data = filter(.data = df, group == group_list[2])) %>%
  addMarkers(lng = ~lng, lat = ~lat, popup = ~pop, group = group_list[3],
             data = filter(.data = df, group == group_list[3])) %>%
  addLayersControl(overlayGroups = group_list,
                   options = layersControlOptions(collapsed = FALSE))
datatable(dplyr::select(df, name:url))
「データから価値を創造する」一般社団法人データマーケティングラボラトリー
Copyright© DML All Rights Reserved.