【发布时间】:2017-07-21 16:19:31
【问题描述】:
我有一个要输入 Google Places API 的位置列表。有些位置有超过 20 个结果。我在下面提供了一个此类位置的示例。要获得超过前 20 个的结果,您必须对 Google Places 进行额外的 API 调用,并使用从第一个 Google Places API 调用中获得的额外“令牌”参数。
使用以下有缺陷的函数,我试图根据是否需要获得额外的结果来执行额外的 API 调用。当前函数产生 NULL 值。任何有关纠正此功能的帮助将不胜感激。
要输入 Sapply 的列表:
LatLongList <- as.list("42.36354942,-71.06396087")
应用功能:
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)
}
}
应用执行:
Output <- sapply(LatLongList, PullFromPlaces)
【问题讨论】:
标签: json r google-places-api sapply rcurl