Как в R tmap контролировать видимость слоя в интерактивном режиме?

Начав с игрушечного примера, я могу быстро получить интерактивную карту в tmap с помощью следующего кода:

library(tmap)
tmap_mode("view")

data("World", "metro")

tm_shape(World) +
  tm_polygons() +
  tm_shape(metro) +
  tm_dots("pop2010", 
          col = "red") + 
  tm_format("World")

Я бы хотел, чтобы на карте изначально отображался только слой World, а слой метро был скрыт. Он появляется только тогда, когда пользователь ставит галочку в поле выбора слоев.

Я просмотрел tm_shape и tm_dots документы и не нашел ничего, что могло бы контролировать такое поведение. Это возможно?


person radek    schedule 01.11.2018    source источник


Ответы (1)


Похоже, что на GitHub эта проблема рассматривалась также здесь.

Одним из решений может быть использование tmap::tmap_leaflet() для создания виджета-листовки, а затем использование leaflet::hideGroup для отображения / скрытия слоев.

library(tmap)
library(leaflet)

tmap_mode("view")

data("World", "metro")

tm <-
  tm_shape(World) +
  tm_polygons() +
  tm_shape(metro) +
  tm_dots("pop2010", 
          col = "red") + 
  tm_format("World")

# Pipe the tmap object into tmap_leaflet() to create a leaflet widget,
# so that we can use leaflet::hideGroup().
tm %>% 
  tmap_leaflet() %>%
  leaflet::hideGroup("metro")
person Valentin    schedule 30.12.2018