2015-04-06 121 views
12

如何添加来自Global Administrative areas的多边形,以便它们可点击。将多边形添加到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/或本SO question,但这样做

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 

有没有办法做到这一点?或者我做错了什么?

+0

什么onclick行动你想以后?简单的弹出窗口?或者更多? – maRtin

+0

简单的弹出窗口很好,开始 –

回答

7

我不确定我是否真的明白这个问题,虽然我多次阅读了这个问题。但是下面的代码似乎适用于我,因为它可以很容易地与简单的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) 
```