2014-05-08 50 views
1

我正在嘗試使用rCharts包顯示包含R的地圖。我開始簡單,所以我想添加一個多邊形到我的地圖。但我不知道如何。有任何想法嗎? addPolygon不起作用。將多邊形添加到地圖R小冊子

map <- Leaflet$new() 


map$tileLayer(provider = 'Stamen.TonerLite') 

map$setView(c(48.1, 16.7), zoom = 10) 
map$addPolygon(
    c(48.99831, 49.08815, 49.08815, 48.99831, 48.99831), 
    c(13.42666, 13.42666, 13.56383, 13.56358, 13.42666), 
    layerId=c("1"), 
    options=opts, 
    defaultOptions=opts) 
map 
+1

「不行」如何?錯誤信息?不要在地圖上看到它?它在代碼中嗎?你的意思是'leafletR'包嗎?或者其他不是來自CRAN的東西?哪裏?什麼版本? – Spacedman

+0

我正在使用「rCharts」包,並且收到以下錯誤消息: envRefInferField(x,whatClass(class(x)),selfEnv)中的錯誤: 'addPolygon'不是有效的字段或方法名稱參考類「宣傳單」 – maRtin

+0

是什麼讓你覺得「addPolygon」會做什麼?你有沒有讀過它?有沒有這樣的事情在包... – Spacedman

回答

6

由rCharts源代碼示例10轉換爲GeoJSON格式導出,如添加多邊形到您的地圖:https://github.com/ramnathv/rCharts/blob/master/inst/libraries/leaflet/examples/example10.R

注意如何lat和長時間都以GeoJSON和XY COORDS之間不同的的setView。這裏的代碼給了我一個捷克共和國靠近德國的藍框。

xy = cbind(
    c(13.42666, 13.42666, 13.56383, 13.56358, 13.42666), 
    c(48.99831, 49.08815, 49.08815, 48.99831, 48.99831) 
    ) 

xyjson = RJSONIO::toJSON(xy) 

jsonX = paste(
    '{"type":"FeatureCollection","features":[ 
     {"type":"Feature", 
     "properties":{"region_id":1, "region_name":"My Region"}, 
     "geometry":{"type":"Polygon","coordinates": [ ',xyjson,' ]}} 
     ] 
     }') 

polys = RJSONIO::fromJSON(jsonX) 
map = Leaflet$new() 
map$tileLayer(provider = 'Stamen.TonerLite') 
map$setView(c(49.1,13.5), zoom = 8) 
map$geoJson(polys) 
map 
# or print(map) from a script probably. 

如果你有一個以上的多邊形,你需要創建{"type": "Feature",的幾個結構和他們的方括號的"FeatureCollection""features"內逗號分隔。爲了更好地展示結構,我重新縮進了一些東西。它到達了像brew包這樣的模板系統將幫助你的地步......

+0

新手問題,但如何才能繪製兩個多邊形? (我實際上會繪製數百個,希望能夠爲多邊形添加標籤/彈出窗口/顏色) – mythstified

+0

我懷疑可能會更容易要求包作者添加一些功能,因爲這是非常常見的用法 - 但我已經編輯了一點,以顯示原則上如何做到這一點。 – Spacedman

相關問題