我测试了你的代码,它对我来说很有效。但你不是在测试状态。如果latlng不正确,则返回“ZERO RESULTS”作为状态(不存在rgc$RESULTS)。这是我测试的代码。
rev <- function(latlng, api_key) {
url= url(paste("https://maps.googleapis.com/maps/api/geocode/json?","latlng=",latlng,"&key=",sep=""))
rgc <- fromJSON(paste(readLines(url), collapse = ''))
close(url)
if (rgc["status"] == "OK") {
rgc <- rgc$results[[1]]
with(rgc, {
rgcdf <<- data.frame(address = formatted_address)
})
for (k in seq_along(rgc$address_components)) {
rgcdf <- cbind(rgcdf, rgc$address_components[[k]]$long_name)
}
names(rgcdf) <- c("address", sapply(rgc$address_components, function(l) l$types[1]))
rgcdf["valid_latlong"] <- TRUE
rgcdf
} else {
rgcdf <- c(valid_latlong=FALSE)
}
}
我用以下方法对此进行了测试:
rev("12.9756300,77.6066230")
你是以这种形式通过考试吗?或者c(9756300,77.6066230)
latlng <- gsub(' ','%20', paste(latlng, collapse=","))
此外,您还没有在共享的代码段中集成api键。将api_key传递给查询参数。