使用API 密钥在ggmap中映射时出错(403 Forbidden)

问题描述 投票:6回答:2

我通常使用ggmap在简单的城市地图上绘制点。今天这样做时,我想出了一个新的错误,禁止我使用get_map()函数

        #get API key @ https://developers.google.com/places/web-service/get-api-key
    key<-"AIzaSyCYgKKt2fn7Crt-V6Hnc5aw5lSfy7XLQ-Y"
    register_google(key = key)

atw<- get_map(location=c(-88.68,42.14), zoom=10, scale=2)

我不确定问题出在哪里。我尝试了一个新的API密钥,但没有运气。有什么输入?

错误如下:

无法打开网址'https://maps.googleapis.com/maps/api/staticmap?center=42.14,-88.68&zoom=10&size=640x640&scale=2&maptype=terrain&language=en-EN&key=AIzaSyCYgKKt2fn7Crt-V6Hnc5aw5lSfy7XLQ-Y':HTTP状态为'403 Forbidden'Error in download.file(url,destfile = destfile,quiet =!messaging,mode =“wb”):无法打开网址'https://maps.googleapis.com/maps/api/staticmap?center=42.14,-88.68&zoom=10&size=640x640&scale=2&maptype=terrain&language=en-EN&key=AIzaSyCYgKKt2fn7Crt-V6Hnc5aw5lSfy7XLQ-Y'

r ggplot2 gis ggmap
2个回答
4
投票

已更新:2018-12-01 for ggmap 2.7.904和当前的Google Cloud API

Problem

您的API密钥是

  • 无效(错误输入)/未启用计费(最可能的原因)或
  • 有一些连接/代理问题。

看看这个step-by-step tutorial on Stackoverflow

Solution

要检查问题是什么,请键入geocode("Houston", output = "all")并查看错误消息。

1. Wrong API key

> geocode("Houston", output = "all")
$error_message
[1] "The provided API key is invalid."

$results
list()

$status
[1] "REQUEST_DENIED"

这意味着您提供了Google无法识别的API密钥。也许是错误的,可能是错误的?有时会出现奇怪的问题,因此请在Google控制台中生成新的API密钥,然后重试。

2. API key not enabled for geocoding

> geocode("Houston", output = "all")
$`error_message`
[1] "This API project is not authorized to use this API."

$results
list()

$`status`
[1] "REQUEST_DENIED"

这意味着您的API密钥有效,但您不允许使用此特定API。请记住:Google为每种小型请求都提供了API(静态地图,路线,地理编码等)。因此,您需要转到Google控制台并为正确的API启用此API密钥,在本例中为Geocoding。

Working output with all APIs enabled

> ggmap(get_map("Houston"))

plot


2
投票

如果您的API密钥正在运行,您还可以使用library(googleway)绘制交互式地图

library(googleway)

## you can use separate API keys for different APIs
set_key( "GOOGLE_API_KEY", api = "geocode")
set_key( "GOOGLE_MAP_KEY", api = "map")

## you can view the keys you have with
google_keys()

google_map( location = c(52, 0), zoom = 6 )

enter image description here

## add a marker by geocoding an address
res <- google_geocode("Buckingham Palace")
loc <- geocode_coordinates( res )

google_map() %>%
  add_markers(data = loc)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.