【问题标题】:OVER_QUERY_LIMIT while using google maps使用谷歌地图时 OVER_QUERY_LIMIT
【发布时间】:2011-04-01 13:55:12
【问题描述】:

我在从我的应用程序访问 google 地图时遇到问题,当我从 java 脚本循环发送超过 10 个请求时,我从地理编码器服务中收到 OVER_QUERY_LIMIT 异常。 有什么办法可以摆脱这个,我尝试使用 setInterval() 等来延迟一些时间。但是没有用。

【问题讨论】:

标签: google-geocoder


【解决方案1】:

可能您每秒发送的请求太多,Google 不允许您这样做。

阅读http://code.google.com/apis/maps/faq.html#geocoder_classorhttp

【讨论】:

    【解决方案2】:

    JavaScript API 中的地理编码是有速率限制的。首次加载 API 时,您可以发送 10 个地址地理编码请求或 5 个反向(latlng)地理编码请求,然后才能收到 OVER_QUERY_LIMIT 响应。当您这样做时,请使用“exponential backoff”来延迟您的查询。

    您可能还想加入Issue 4805 (gmaps-api-issues) 中的讨论。

    【讨论】:

      【解决方案3】:

      如果您使用自动完成功能,请尝试使用 Google 的 Places Autocomplete API。 (尽管这不是他所问的,但我想很多人会从这个问题来到这里)

      【讨论】:

        【解决方案4】:

        有一个 API 列表,并为每个请求随机使用它们。 以python为例

        like 键 = [key1,key1,key3....]

        location = Geocoder(random.choice(keys)).geocode(address) 
        

        location = Geocoder(random.choice(keys)).reverse_geocode(Lat,Long)
        

        根据您的要求

        【讨论】:

          【解决方案5】:

          首先阅读这篇文章。 https://developers.google.com/maps/premium/previous-licenses/articles/usage-limits

          如果您在一秒钟内发送许多请求,请使用延迟方法。

          function sleep(milliSeconds) {
            var startTime = new Date().getTime();
            while (new Date().getTime() < startTime + milliSeconds);
          }
          

          在你的循环结构中调用这个方法。 睡眠(2200);

          【讨论】:

            【解决方案6】:

            我们可以使用ajax队列。

            一次将执行 20 个 ajax 请求,其他的将在队列中等待。

            创建多个地理编码密钥并保存在一个数组中,并为每个 ajax 请求随机使用它。

            我在这里加载了 2200 个标记。添加 2200 个位置大约需要 1 分钟。

            <https://jsfiddle.net/suchg/qm1pqunz/11/>
            

            【讨论】:

            猜你喜欢
            • 2011-10-11
            • 1970-01-01
            • 1970-01-01
            • 2014-04-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多