ggmap 中的错误,“必须是数组”和“HTTP 400 错误请求”

Posted

技术标签:

【中文标题】ggmap 中的错误,“必须是数组”和“HTTP 400 错误请求”【英文标题】:Error in ggmap, "must be an array" and "HTTP 400 bad request" 【发布时间】:2020-05-20 12:06:30 【问题描述】:

我正在尝试使用 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 密钥和限制进行一些摆弄之后,它们似乎得到了解决。在这种情况下,我做了以下事情:

    启用计费 限制了我的 API 密钥 - 但是,我无法选择将其限制为“静态地图”。我目前将其限制为 “谷歌云 API”。和以前一样的错误,但关键仍然是 注册命中。 完成上述操作后重新启动 R,并仔细检查我的包。

不胜感激,我的实验室同事都没有遇到这个问题,我开始扯头发了,哈哈。

【问题讨论】:

您的代码适用于我的 API 密钥。此外,我的密钥不受限制,当我查看限制它的选项时,Maps Static API 可用。尝试创建新的 API 密钥? 【参考方案1】:

经过一番折腾,我想通了。这不是很直观,所以我将其发布在这里,以防其他新人遇到同样的问题。

本质上,在生成密钥后,您需要从云控制台进入库并启用以下四个 API:

静态地图, 地图嵌入, 地理位置, 地理编码。

然后,去编辑密钥。向下滚动并将其限制为上述四个 API。之后工作得很好。

【讨论】:

【参考方案2】:

我遇到了和你一样的问题,我修复了它,在这个链接中重新生成 API 密钥:https://console.cloud.google.com/

首先您在垂直菜单中查找“API 和服务”(或类似内容),然后查找“凭据”。

如果您的 API 密钥太旧,就像我的一样,而且我只使用了几次,那么密钥可能停止工作。重新生成一个新的后,它工作正常!

【讨论】:

以上是关于ggmap 中的错误,“必须是数组”和“HTTP 400 错误请求”的主要内容,如果未能解决你的问题,请参考以下文章

r中的ggmap - 自己的边界框

R在GIS中用ggmap地理空间数据分析

使用 ggmap 和 ggplotly

choroplethr、ggmap 或 ggplot2 中的道路和半径圆

使用“r”和ggmap制作航空事故地图

sf 对象未正确覆盖在 r 中的 ggmap 层上