将多边形添加到R闪亮的传单地图

Rom*_*kyi 14 r shapefile leaflet shiny

如何从全局管理区域添加多边形,以便可以单击它们.

docs我试过的简单方法描述的是

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

但想象一下,我想要一个将在稍后进行onClick操作的传单地图.

基于SuperZip,我需要有类似的东西

  map <- createLeafletMap(session, "map")
  session$onFlushed(once=TRUE, function() {
     map$addPolygon(...) 
  })
Run Code Online (Sandbox Code Playgroud)

但是,没有addPolygon方法,我很困惑它将如何工作SpartialPolygons.

我也试过转换geoJSON,类似于https://ropensci.org/blog/2013/10/23/style-geojson-polygon/或这个SO问题,但正在做

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

给我一个错误

Error in func() : attempt to apply non-function
Run Code Online (Sandbox Code Playgroud)

有办法吗?或者我做错了什么?

maR*_*tin 13

我不确定我是否真的理解这个问题,尽管我已经多次阅读了这个问题.但是下面的代码似乎对我有用,因为它可以很容易地与一个简单的onClick事件结合起来,比如显示每个adm的名称的弹出窗口.单元:

---
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)
```
Run Code Online (Sandbox Code Playgroud)