2015-04-06 96 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) 
```