Для листовки в R вы можете добавить кнопку, которая добавляет и удаляет полигоны для каждого слоя карты?

#r #leaflet #r-markdown

Вопрос:

Если мы просто возьмем стандартную leaflet карту, подобную приведенной ниже:

 library(leaflet)
library(maps)

mapStates = map("state", fill = TRUE, plot = FALSE)

leaflet(data = mapStates) %>% addTiles() %>%
  addPolygons(fillColor = topo.colors(10, alpha = NULL), stroke = FALSE)
 

Есть ли способ добавить кнопку, которая добавляет и удаляет определенные полигоны? Например, если бы карта выше содержала несколько слоев (т. Е. Незастрахованные ставки и средний возраст), я бы хотел, чтобы кнопка или переключатель позволяли пользователю добавлять и удалять все состояния, начинающиеся с «а» (глупый пример). Поэтому вместо того, чтобы иметь 4 слоя (два со статистикой по всем штатам и два со статистикой по штатам, которые не начинаются с «а»), у меня было бы только два слоя и кнопка.

Мое предостережение заключается в том, что он должен быть экспортируемым в формате .html, что означает, что я не могу развернуть shiny решение.

Может быть addEasyButton , есть какое-то решение?

Ответ №1:

Вам нужно будет добавить уникальный идентификатор в параметр группы функции addPolygons (), а затем передать его в addLayersControl(), согласно https://rstudio.github.io/leaflet/showhide.html

Я не могу полностью предоставить код, так как у меня нет ваших данных о состоянии карты, но вот попытка

 library(leaflet)
library(maps)

mapStates = map("state", fill = TRUE, plot = FALSE)

leaflet(data = mapStates) %>% addTiles() %>%
  addPolygons(fillColor = topo.colors(10, alpha = NULL), stroke = FALSE, group = "stateShape") %>%
addLayersControl(overlayGroups = c("stateShape"))