使用ggmap route function

时间:2017-02-27 16:22:07

标签: r ggplot2 routes mapping ggmap

所以我尝试使用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步。任何帮助,将不胜感激。也请原谅格式或礼仪方面的任何错误,这基本上是我的第一个问题。

1 个答案:

答案 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()查看。