将多个多边形添加到rCharts传单贴图
当我尝试使用将多个多边形添加到rCharts传单贴图,r,leaflet,geojson,rcharts,rjsonio,R,Leaflet,Geojson,Rcharts,Rjsonio,当我尝试使用map$geoJson()函数使用rCharts向传单地图添加多个多边形时,地图上只显示最后一个多边形。其他的不显示。你知道我该怎么做才能在地图上添加多个多边形吗?下面您可以看到我所做工作的详细描述: 1。我正在查询postgis数据库以获取多边形,因此我得到了一个多边形的代码作为GeoJSON,大致如下所示: "{\"type\":\"Polygon\",\"coordinates\":[[[16.644953973395001,48.142664957703971], ...[1
map$geoJson()
函数使用rCharts
向传单地图添加多个多边形时,地图上只显示最后一个多边形。其他的不显示。你知道我该怎么做才能在地图上添加多个多边形吗?下面您可以看到我所做工作的详细描述:
1。我正在查询postgis数据库以获取多边形,因此我得到了一个多边形的代码作为GeoJSON,大致如下所示:
"{\"type\":\"Polygon\",\"coordinates\":[[[16.644953973395001,48.142664957703971], ...[16.644439684506018,48.143173899704649],[16.644953973395001,48.142664957703971]]]}"
$type
[1] "Polygon"
$coordinates
$coordinates[[1]]
$coordinates[[1]][[1]]
[1] 16.66885 48.42283
$coordinates[[1]][[2]]
[1] 16.66196 48.42634
$coordinates[[1]][[3]]
[1] 16.65877 48.42876
.
.
.
$coordinates[[1]][[62]]
[1] 16.67115 48.42179
$coordinates[[1]][[63]]
[1] 16.66885 48.42283
map <- Leaflet$new()
map$tileLayer(provider = 'Stamen.TonerLite')
map$setView(c(48.42283, 16.66885), zoom = 10)
map$enablePopover(TRUE)
map$geoJson(polygon1)
map$geoJson(polygon2)
map$geoJson(polygon3)
map$geoJson(polygon4)
map$fullScreen(TRUE)
map$set(width = 800, height = 600)
map
总之,我有81个多边形,我想在传单地图上显示它们。为此,我正在使用rCharts软件包
2。作为下一步,我使用fromJSON
函数使用包RJSONIO
转换它们。然后,单个多边形的代码大致如下所示:
"{\"type\":\"Polygon\",\"coordinates\":[[[16.644953973395001,48.142664957703971], ...[16.644439684506018,48.143173899704649],[16.644953973395001,48.142664957703971]]]}"
$type
[1] "Polygon"
$coordinates
$coordinates[[1]]
$coordinates[[1]][[1]]
[1] 16.66885 48.42283
$coordinates[[1]][[2]]
[1] 16.66196 48.42634
$coordinates[[1]][[3]]
[1] 16.65877 48.42876
.
.
.
$coordinates[[1]][[62]]
[1] 16.67115 48.42179
$coordinates[[1]][[63]]
[1] 16.66885 48.42283
map <- Leaflet$new()
map$tileLayer(provider = 'Stamen.TonerLite')
map$setView(c(48.42283, 16.66885), zoom = 10)
map$enablePopover(TRUE)
map$geoJson(polygon1)
map$geoJson(polygon2)
map$geoJson(polygon3)
map$geoJson(polygon4)
map$fullScreen(TRUE)
map$set(width = 800, height = 600)
map
3。作为最后一步,我创建了一个传单贴图,并使用map$geoJson
函数添加多边形:
"{\"type\":\"Polygon\",\"coordinates\":[[[16.644953973395001,48.142664957703971], ...[16.644439684506018,48.143173899704649],[16.644953973395001,48.142664957703971]]]}"
$type
[1] "Polygon"
$coordinates
$coordinates[[1]]
$coordinates[[1]][[1]]
[1] 16.66885 48.42283
$coordinates[[1]][[2]]
[1] 16.66196 48.42634
$coordinates[[1]][[3]]
[1] 16.65877 48.42876
.
.
.
$coordinates[[1]][[62]]
[1] 16.67115 48.42179
$coordinates[[1]][[63]]
[1] 16.66885 48.42283
map <- Leaflet$new()
map$tileLayer(provider = 'Stamen.TonerLite')
map$setView(c(48.42283, 16.66885), zoom = 10)
map$enablePopover(TRUE)
map$geoJson(polygon1)
map$geoJson(polygon2)
map$geoJson(polygon3)
map$geoJson(polygon4)
map$fullScreen(TRUE)
map$set(width = 800, height = 600)
map
map您必须构造一个包含所有多边形的geoJSON对象,并添加该对象。请看这里:
请注意,json是一个具有几何体类型多边形特征的FeatureCollection。根据多边形坐标构建该字符串并添加。这是推荐的方法。我相信传单JS允许一次添加一个简单的几何体,但我没有在rCharts绑定中公开这一点。因此geoJSON
是一条可行之路。在rCharts中使用多个geoJSON层会很方便,但最终人们必须咬紧牙关,意识到自己也可以编写JS。这是真的。必须要有一个平衡。那么,如何从多个数据集编写geoJson,并在其上显示点和多边形呢?