Подтвердить что ты не робот

Добавить полигоны в R блестящую карту буклетов

Как добавить многоугольники из Глобальные административные области, поэтому они доступны для просмотра.

Простой способ описать в docs, который я пробовал, это

adm <- getData('GADM', country='UKR', level=1)
leaflet() %>% addTiles() %>% addPolygons(data=adm, weight = 3, fillColor = col)

Но представьте, что мне нужна карта буклета, в которой позже будут выполняться действия onClick.

Основываясь на SuperZip, мне нужно что-то похожее на

  map <- createLeafletMap(session, "map")
  session$onFlushed(once=TRUE, function() {
     map$addPolygon(...) 
  })

Однако метода addPolygon нет, и я смущен, как он будет работать для SpartialPolygons.

Я также попытался преобразовать в geoJSON, подобно https://ropensci.org/blog/2013/10/23/style-geojson-polygon/ или this SO вопрос, но делать

  polys <- fromJSON(<json data file>)
  map <- createLeafletMap(session, "map")
  session$onFlushed(once=TRUE, function() {
    map$geoJson(polys)
  })

Дает мне ошибку

Error in func() : attempt to apply non-function

Есть ли способ сделать это? Или что я делаю неправильно?

4b9b3361

Ответ 1

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

---
title: "Ukraine"
runtime: shiny
output: html_document
---

```{r, echo=FALSE, message=F, warning=F}
library(leaflet)
library(raster)

adm <- getData('GADM', country='UKR', level=1)

popup <- paste0("<strong>Name: </strong>", 
                        adm$NAME_1)

leaflet() %>% 
  addTiles() %>% 
  addPolygons(data=adm, weight = 2, fillColor = "yellow", popup=popup)
```