使用Google Elevation Service针对超过2个请求点击“OVER_QUERY_LIMIT”错误

时间:2018-03-15 12:13:01

标签: javascript google-elevation-api

前提

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

使用政策

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

来自Google Elevation Service Site

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

方法

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

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

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

2 个答案:

答案 0 :(得分:3)

首先查看here

的答案

我不确定,但您可以查看thisthis宣传单插件。

Google文章已经documented您目前遇到的相同问题。并给出一些solutions also

我也检查了你的Codepen。

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

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

最后一个选项使用Google Maps API for Work执照

重要提示:请更改或使用您在codepen中使用的演示Google API密钥。因为任何人都可以使用你的钥匙。或者保护它免受Google API控制台的攻击在这些HTTP引荐来源(网站)的“接受请求”下,您可以在此限制域名的密钥。

答案 1 :(得分:1)

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