2014-05-08 49 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

相关问题