使用 Google 海拔服务超过 2 个请求时出现“OVER_QUERY_LIMIT”错误

Hitting `OVER_QUERY_LIMIT` error using the Google Elevation Service for any more than 2 requests

前提

我正在使用 Google 高程服务来获取路径上所有节点的高程,由用户绘制到 Leaflet 地图上。这允许我生成海拔图。目前,如果我发出超过 2 个请求(每个请求有 512 个位置的限制),我总是会点击 OVER_QUERY_LIMIT.

使用政策

  • 2,500 free requests per day, calculated as the sum of client-side and server-side queries; enable billing to access higher daily quotas, billed at [=13=].50 USD / 1000 additional requests, up to 100,000 requests daily.
  • 512 locations per request.
  • 50 requests per second*, calculated as the sum of client-side and server-side queries combined.

来自Google Elevation Service Site

我知道我没有达到每天 2500 个请求(可以在开发者控制台中查看已发出的请求数)。我也知道每个请求肯定有 512 个位置,这使得唯一要达到的配额是每秒 50 个请求。

方法

为了处理大量节点,我正在执行以下操作:

  1. 输入要运行的节点列表
  2. 从列表中取出第一个块(512 个位置)
  3. 用那个块API调用
  4. 将返回的高程附加到数组
  5. 等待1秒
  6. 从 2 到 5 循环直到列表耗尽

实际代码:Codepen

如果我让每个请求之间的等待时间变得很长(比如 5 秒),请求将被正常发送,但据我所知,我应该能够每秒发送 50 个请求 - 所以列表10,000 个节点应该接受 20 个请求,理论上甚至不需要等待 - 但即使等待也会遇到错误。

首先检查

的答案

我不确定,但您可以使用 this and this 传单插件查看。

Google 篇文章已经 documented same issues which you are facing currently. And given some solutions also

我也检查了你的 Codepen。

不过,如果您只有 Google 海拔服务选项,那么您需要检查一些逻辑,例如:

  • 尝试使用不同的 Google API 键复制相同的代码并合并结果。
  • 检查是否可以在使用 5-6 个不同的 API 键的循环中导入 Google API 脚本 cdn。

最后一个选项是 使用 Google 地图 API 工作许可证

重要提示:请更改或使用您在 codepen 中使用的演示 Google API 密钥。因为任何人都可以使用您的密钥。或保护它不受 Google API 控制台的影响 在接受来自这些 HTTP 引荐来源网址(网站)的请求下,您可以在此处将密钥限制为您的域名。

似乎还有另一个限制:5 秒内 1024 个位置 window。因此,每个 512 个位置的 2 个请求,4 个在 256,8 个在 128,等等,都可以工作,但是你必须等待 5 秒才能收到下一个请求。我认为每秒 50 个请求的限制只有在位置总数为 1024 或更少时才会生效。