所以我尝试使用ggmap的route()函数创建一个可以叠加到地图上的geom。
我列出了" lat,lon"名为检查点的列表中的格式。
list("40.775912, -74.012619", "40.775912, -74.012619", "40.782669, -74.008143",
"40.788587, -74.000447", "40.805952, -73.991671", "40.821177, -73.987895",
"40.836634, -73.978271", "40.845806, -73.971319", "40.855106, -73.967628",
"40.859186, -73.972037", "40.862502, -73.969255", "40.863977, -73.968383",
"40.860894, -73.968126", "40.856154, -73.972603", "40.852727, -73.965511",
"40.850897, -73.965913", "40.850939, -73.968064", "40.846506, -73.970819",
"40.836634, -73.978271", "40.821177, -73.987895", "40.806622, -73.991894",
"40.788587, -74.000447", "40.782669, -74.008143", "40.775912, -74.012619")
我试图按顺序在每组位置上执行路线功能,即从1-2然后2-3 ......
routes <- lapply(2:length(checkpoints),
function(x) route(from = checkpoints[[x-1]],
to = checkpoints[[x]],
mode = "driving",
output = "simple"))
代码每次运行到第10步然后我都会收到此错误:
Error: (list) object cannot be coerced to type 'integer'
我最终得到了10条路线数据的列表,就像我想要的那样。我已经尝试在应用功能中取消列出检查点列表,但由于某种原因它仍然没有超过第10步。任何帮助,将不胜感激。也请原谅格式或礼仪方面的任何错误,这基本上是我的第一个问题。
答案 0 :(得分:1)
该错误信息量不大,但我认为这是因为对于此类信息,您可以多久调用Google的API。我们可以使用sleep命令限制我们的呼叫率,这使它工作正常:
lapply(2:nrow(checkpoints),
function(x) {
Sys.sleep(1)
ggmap::route(from = checkpoints[[x-1]],
to = checkpoints[[x]],
mode = "driving",
output = "simple")
} )
另请注意,您每天只能进行多次查询,可以使用ggmap::routeQueryCheck()
查看。