在R Shiny Leaflet地图中添加多边形

17

我如何从全球行政区域中添加多边形,使它们可以被点击。

我尝试过文档中描述的简单方法:

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/或这个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

有没有办法做到这一点?或者我哪里做错了?


你希望以后有什么点击操作呢?简单的弹出窗口?还是更多其他的操作? - maRtin
简单的弹出窗口可以作为起点。 - romants
1个回答

15

我不确定我真正理解这个问题,尽管我已经读了几遍这个问题。然而下面的代码似乎对我有效,因为它可以与简单的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)
```

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接