ggmap出现错误,“必须是一个数组”和“HTTP 400 Bad Request”。

9
我尝试使用ggmap调用谷歌地图上的地图。以下是示例代码:

我正在尝试使用ggmap调用谷歌地图上的地图。以下是示例代码:

get_googlemap(center = c(lon = -56.67, lat = 51.47), zoom = 8, size = c(640, 640), scale = 2,
                   format = "png8", maptype = "satellite")

然而,这会返回以下错误:
源:https://maps.googleapis.com/maps/api/staticmap?center=24.8,-81.7&zoom=8&size=640x640&scale=4&maptype=satellite&key=(removed发布密钥的键)。
Error in aperm.default(map, c(2, 1, 3)) : 
  invalid first argument, must be an array
In addition: Warning message:
In get_googlemap(center = c(lon = -81.7, lat = 24.8), zoom = 8,  :
  HTTP 400 Bad Request

我看了一些人遇到类似问题的帖子。看起来在操作API密钥和限制方面有所改动后,问题得以解决。在这个背景下,我已经完成了以下操作:

  1. 启用计费
  2. 限制了我的API密钥 - 然而,我没有选项将其限制为“静态地图”。目前我将其限制为“Google Cloud APIs”。与之前相同的错误,但是密钥仍然能被读取。
  3. 在完成上述操作后,重新启动R并仔细检查我的软件包。

希望能得到帮助,我的实验室同学都没有这个问题,我开始抓狂了,哈哈。


您的代码对我的API密钥有效。此外,我的密钥是无限制的,当我查看限制选项时,“Maps Static API”可用。尝试创建一个新的API密钥? - Eugene Chong
3个回答

16
在一些尝试之后,我搞清楚了。这不是非常直观的,因此我在这里发布它,以防其他新手遇到同样的问题。
基本上,在生成密钥后,你需要从云控制台进入库并启用以下四个API:
静态地图, 嵌入地图, 地理位置, 地理编码。
然后,去编辑该密钥。向下滚动并将其限制为前面提到的四个API。之后就完美解决了。

1
我遇到了和你一样的问题,我在这个链接中重新生成了API密钥:https://console.cloud.google.com/ 首先,您需要在垂直菜单中查找“API和服务”(或类似内容),然后再查找“凭据”。
如果您的API密钥太旧了,就像我的一样,只使用了几次,那么可能密钥会停止工作。 我重新生成了一个新密钥后,它正常工作!

0
我对上面的解决方案有一点补充。我只在R中使用我的API密钥来生成地图,但是我收到了与您相同的错误消息。我尝试了所有建议的解决方案:启用计费、将密钥限制为仅四个API,但仍然遇到了问题。我的Google Cloud Console上的“免费试用”已经结束,我所需要做的就是在试用期结束时续订计费。分享这个信息,以便将来能帮助到某些人。

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接