我正在构建闪亮的应用程序,使用传单来绘制带有标记和多边形的地图。
此时我有一张地图,其中有一些标记和一个多边形
这是我代码的一部分,有了这个我可以在传单地图中渲染一个多边形,但前提是
com <- mongo$find('{"id" : "Temuco"}')
有一个名称(特木科或圣地亚哥),如果我把'{"id" : {"$in":["Temuco", "Santiago"]}}'
全部因此错误而崩溃:'选项' 必须是完整命名的列表,或者没有名称 (NULL)
com <- mongo_comunas$find('{"nombre": {"$in":["Temuco", "Santiago", "etcetcetc"]}}')
build_list <- split(com, com$id)
build_list <- lapply(build_list, function(x){x["id"]<- NULL;x})
build_list <- lapply(build_list, function(x){x["order"]<- NULL;x})
build_list <- lapply(build_list, function(x){x["hole"]<- NULL;x})
build_list <- lapply(build_list, function(x){x["piece"]<- NULL;x})
build_list <- lapply(build_list, function(x){x["group"]<- NULL;x})
ps <- lapply(build_list, Polygon)
ps <- Polygons(ps, ID = 1)
ps <- SpatialPolygons(list(ps), proj4string =CRS("+proj=longlat"))
output$mymap <- renderLeaflet({
leaflet(data = ps) %>% addTiles() %>% addPolygons())
})
仅使用
com <- mongo$find('{"id" : "Temuco"}')
(或其他ID)就可以了。我使用 ggplot 与该函数并一次渲染两个或三个或更多多边形,但传单全部崩溃。
存储在 mongo 中的数据如下:
long lat order hole piece id group
1 -72.8012 -38.8337 914361 FALSE 1 Temuco Temuco.1
.
.
.
200 -72.5503 -38.7324 919738 FALSE 1 Santiago Santiago.1
你在用吗
mongo$find(...)
或
mongo_comunas$find(...)
?
因为mongo命令不能用来查询你的db。它用于建立与 mongodb 的连接。
你需要类似这样的东西:
mongoConnection <- mongo(collection = "test", db = "test", url = "mongodb://localhost",
verbose = FALSE, options = ssl_options())
请参阅 ?mongo 寻求帮助。
然后您可以调用此连接进行查找、聚合等查询
com <- mongoConnection$find(...)
我猜测该连接是您分配给 mongo_comunas 的连接,但没有看到更多代码,我不确定。
您拉入的数据是否包含任何数组?如果是这样,您将需要使用 $unwind 命令来取消嵌套这些数组。
您可能还需要使用 jsonlite 包中的“flatten”来进一步将数据展平为非嵌套数据框。