对于超过2个请求,使用Google Elevation Service会出现"OVER_QUERY_LIMIT"错误

Ed *_*nce 8 javascript google-elevation-api

前提

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

使用政策

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

来自Google Elevation服务网站

我知道我每天都没有达到2500个请求(可以在开发者控制台中看到已经制作了多少个请求).我也知道每个请求肯定有512个位置,这使得唯一的配额是每秒50个请求.

方法

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

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

行动准则:Codepen

如果我在每个请求(比如5秒)之间进行大量的等待时间,则请求被正常发送,但从我所知道的,我应该能够每秒发送50个请求 - 所以10,000个节点的列表应该需要20个请求,理论上甚至不需要等待 - 但即使等待它击中错误.

小智 1

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