我有一个位置列表,可以输入到Google Places API中。一些地点有超过20个结果。我在下面提供了一个这样的位置的例子。要获得超出前20名的结果,您必须向Google Places添加额外的API调用,并从第一次Google Places API调用中获取额外的“令牌”参数。Sapply功能中的多个Google Places API调用
使用下面的有缺陷的函数,我试图执行额外的API调用,基于是否有额外的结果需要获得。当前函数产生NULL值。任何帮助纠正这个功能将不胜感激。
清单送入Sapply:
LatLongList <- as.list("42.36354942,-71.06396087")
Sapply功能:
library(RCurl)
library(tidyjson)
library(magrittr)
library(dplyr)
PullFromPlaces <- function(x) {
url = paste0("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=",x,"&radius=",radius_meters,"&types=",type,"&key=",key)
payload_json <- getURL(url)
next_page_token <- payload_json %>%
as.tbl_json %>%
enter_object("next_page_token")
next_page_token <- as.character(attr(next_page_token,"JSON"))
if (length(next_page_token) != 0) {
url = paste0("https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=",x,"&radius=",radius_meters,"&types=",type,"&pagetoken=",next_page_token,"&key=",key)
payload_json <- getURL(url)
}
}
Sapply执行:
Output <- sapply(LatLongList, PullFromPlaces)
非常感谢SymbolixAU。这是一个很好的第一步,但我想知道是否对如何将第一个和第二个API拉取结合起来,以及第三个API拉取结果40-60的建议?我希望能够一次拉出所有东西。 – Bdude11383
@ Bdude11383 - 我还没有完全测试它,但有些循环迭代,直到'page_token'不再存在/无效应该做? – SymbolixAU