【发布时间】:2022-03-05 04:53:23
【问题描述】:
我正在使用 R 编程语言。
使用“传单”库,我为这 5 个城市制作了以下地图:
library(dplyr)
library(leaflet)
map_data <- data.frame("Lat" = c(43.6426, 43.6424, 43.6544, 43.6452, 43.6629), "Long" = c(-79.3871, -79.3860, -79.3807, -79.3806,-79.3957 ), type = c(1,2,3,4,5))
map_data$type = as.factor(map_data$type)
leaflet(map_data) %>%
addTiles() %>% addCircleMarkers(stroke = FALSE, label = ~type,fillOpacity = 0.8, labelOptions = labelOptions(direction = "center",style = list('color' = "white"),noHide = TRUE, offset=c(0,0), fill = TRUE, opacity = 1, weight = 10, textOnly = TRUE))
在我创建的上面这张地图上,我现在想根据它们的“编号”在地图(路线)上“连接”所有这些“点”(即城市) (例如将1与2连接,2与3连接,3与4连接,4与5连接,5与1连接),并输出路线的“总距离”。我发现以前的帖子显示了如何做到这一点:How to show path and distance on map with leaflet, shiny apps?
我试图调整这篇文章中的代码以适应我的问题:
library(osrm)
route = osrmRoute(c(-79.3871, -79.3860, -79.3807, -79.3806,-79.3957 ), c(43.6426, 43.6424, 43.6544, 43.6452, 43.6629), overview = 'full')
route_summary = osrmRoute(c(-79.3871, -79.3860, -79.3807, -79.3806,-79.3957 ), c(43.6426, 43.6424, 43.6544, 43.6452, 43.6629), overview = FALSE)
leaflet() %>% addTiles() %>%
addCircleMarkers(c(-79.3871, -79.3860, -79.3807, -79.3806,-79.3957 ), c(43.6426, 43.6424, 43.6544, 43.6452, 43.6629), stroke = FALSE, label = ~type,fillOpacity = 0.8,
labelOptions = labelOptions(direction = "center",style = list('color' = "white"),noHide = TRUE, offset=c(0,0), fill = TRUE, opacity = 1, weight = 10, textOnly = TRUE)) %>%
addPolylines(route$lon,route$lat,
label = paste(round(route_summary[1]/60), 'hr - ', round(route_summary[2]), 'km'),
labelOptions = labelOptions(noHide = TRUE))
但这会返回以下错误:
Error in UseMethod("metaData") :
no applicable method for 'metaData' applied to an object of class "NULL"
谁能告诉我如何解决这个问题?
我想使用“leaflet”而不是“rshiny”来做到这一点。最后,我希望最终的地图看起来像这样(这应该代表旅行商问题中的“单一路径”):
注意:我开始认为问题可能是“osrmRoute()”函数可能无法工作超过 2 个点?
【问题讨论】:
-
为此,您不需要 OSRM,因为这不是基于道路网络 + 道路限制 + lua 配置文件 + ...它只是基本点连接。您可以使用
sf包来做到这一点 -
@det:谢谢你的回复!我以前从未使用过 sf 包,我将开始阅读它。它与此问题中的基本传单地图兼容吗?非常感谢!
-
是否可以在这里修改这篇文章中的代码? stackoverflow.com/questions/32275213/…我会试试这个!
-
在我的帖子中查看编辑
-
@Det:非常感谢您的编辑!我玩弄了您的代码以获取每个连接上显示的总距离 - 我做的是否正确?非常感谢您的帮助!
标签: r leaflet data-visualization geospatial