我今天开始使用 get_map 向 googlemaps 发出大约 230 个地图请求,然后出现错误(丢失了原始错误)。我的第一个假设是我使用它超出了 api 的限制,但我尝试使用开放街道地图 api 作为源,我收到的错误消息仍然看起来像 get_map 正在使用 googlemaps。这是怎么回事?我重新启动了计算机并尝试重现该错误。当我访问源代码中列出的 url 时,我没有得到我的地图,而是得到一个小图像,看起来像是我检查了 api 使用情况。但我已将源设置为 osm。
> library(ggmap)
Loading required package: ggplot2
Warning message:
package ‘ggmap’ was built under R version 3.1.1
Loading required package: sp
> get_map(source = "osm")
Error in download.file(url, destfile = destfile, quiet = !messaging, mode = "wb") :
cannot open URL 'http://maps.googleapis.com/maps/api/staticmap?center=29.763284,-95.363271&zoom=10&size=%20640x640&maptype=terrain&sensor=false'
In addition: Warning messages:
1: package ‘sp’ was built under R version 3.1.1
2: In download.file(url, destfile = destfile, quiet = !messaging, mode = "wb") :
cannot open: HTTP status was '403 Forbidden'
> detach(sp)
Error in detach(sp) : invalid 'name' argument
> detach("sp")
Error in detach("sp") : invalid 'name' argument
> get_map(source = "osm")
Error in download.file(url, destfile = destfile, quiet = !messaging, mode = "wb") :
cannot open URL 'http://maps.googleapis.com/maps/api/staticmap?center=29.763284,-95.363271&zoom=10&size=%20640x640&maptype=terrain&sensor=false'
In addition: Warning message:
In download.file(url, destfile = destfile, quiet = !messaging, mode = "wb") :
cannot open: HTTP status was '403 Forbidden'
这是我为获取地图图像而设置的原始循环。
for(i in seq(levels(named_trails$TRAIL_NAME))) {
one_trail <- named_trails[which(named_trails$TRAIL_NAME == levels(named_trails$TRAIL_NAME)[i]),]
map_center <- c(min(one_trail$long) - 0.02, min(one_trail$lat) - 0.02, max(one_trail$long) + 0.02, max(one_trail$lat) + 0.02)
anc_map <- get_map("anchorage, AK", source = "stamen")
p <- ggmap(anc_map) +
geom_line(data = one_trail, aes(x = long, y = lat, color = TRAIL_NAME)) +
ggtitle(levels(named_trails$TRAIL_NAME)[i]) +
theme(legend.position="none")
ggsave(paste(i, ".png", sep = ""))
Sys.sleep(4)
}
视窗 7 x86
R 3.1.0
Rstudio版本0.98.932