8

前提

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

使用政策

  • 每天 2,500 个免费请求,按客户端和服务器端查询的总和计算;启用计费以获得更高的每日配额,按 0.50 美元/1000 个额外请求计费,每天最多 100,000 个请求。
  • 每个请求 512 个位置。
  • 每秒 50 个请求*,计算为客户端和服务器端查询的总和。

来自Google 海拔服务网站

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

方法

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

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

实际代码:Codepen

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

4

2 回答 2

3

首先从这里检查答案

我不确定,但你可以检查这个这个传单插件。

谷歌文章已经记录了您当前面临的相同问题。并给出了一些解决方案

我也检查了你的 Codepen。

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

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

最后一个选项是使用 Google Maps APIs for Work 许可证

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

于 2018-03-22T15:50:49.180 回答
1

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

于 2018-07-18T08:31:42.917 回答