【问题标题】:OVER_QUERY_LIMIT google maps api v3OVER_QUERY_LIMIT 谷歌地图 api v3
【发布时间】:2014-04-06 02:11:23
【问题描述】:

我的应用程序从每隔几个小时更新一次的文件中获取地址,并对它们进行地理编码并将它们放在谷歌地图上。

我得到了一个 OVER_QUERY_LIMIT 状态,即使我从前一天就没有使用过它,并且我在每个查询之间设置了时间。我在每个查询之间放置 2 秒,此代码在调用它所在的函数时使用,该函数在之前调用后 2 秒后调用。

var xmlhttp
var status;

if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp = new XMLHttpRequest();
}
else{// code for IE6, IE5
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

var lAddress = tAddress.replace(/ /g, " +");


xmlhttp.open("GET","http://maps.googleapis.com/maps/api/geocode/json?address=" + lAddress +"&sensor=false", false);

xmlhttp.onreadystatechange = function(){
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200){

        var result = JSON.parse(xmlhttp.responseText);

        status = result.status;


        if(status == google.maps.GeocoderStatus.OK){
            precise[index].found = 1;
            precise[index].lat = result.results[0].geometry.location.lat;
            precise[index].lng = result.results[0].geometry.location.lng;
            precise[index].addr = tAddress;

        }
        else if(status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT){
            alert("Search limit reached. Please try again tomorrow.");
        }
    }
}


xmlhttp.send();

【问题讨论】:

  • 您说地址在一个文件中,每隔几个小时更新一次 - 如果您不检查哪些地址已更新并且您(重新)对所有地址进行地理编码,这可能会将您推倒你的极限。
  • 我不会对所有这些进行地理编码。我根据搜索条件从文件中得到我需要的地址。
  • 您是否跟踪您正在地理编码的数量?
  • 不,但我是唯一一个使用它的人,而且我不可能达到 2500 个查询。

标签: javascript ajax google-maps google-maps-api-3


【解决方案1】:

阅读有关google maps.的文档,可以看到

如果您超出使用限制,您将收到OVER_QUERY_LIMIT 状态代码作为响应。

这意味着 Web 服务将停止提供正常响应并切换到仅返回状态代码 OVER_QUERY_LIMIT,直到再次允许更多使用。这可能发生:

  1. 在几秒钟内,如果收到错误是因为您的 应用每秒发送的请求过多。
  2. 在接下来的 24 小时内,如果收到错误是因为您的应用程序每天发送的请求过多。每天重置服务的每日配额的时间因客户和每个 API 的不同而不同,并且会随时间而变化。

收到状态码为OVER_QUERY_LIMIT 的响应后,您的应用程序应确定已超出哪个使用限制。这可以通过暂停 2 秒并重新发送相同的请求来完成。如果状态码仍为OVER_QUERY_LIMIT,则您的应用程序每天发送的请求过多。否则,您的应用每秒发送的请求过多。

根据您所说的,您很可能已经使用了每日限额。

根据他们的licensing policy,您可以获得 2500 个地理编码请求。

【讨论】:

  • 我今天只发送了 20 个查询。我在每个查询之间暂停 2 秒。
  • @user1721803 看来,2 秒是不够的。 Google 仍然认为,他们的服务被滥用了,因为他们认为在正常使用的情况下,他们不应该在如此短的时间间隔内收到来自同一 IP 的请求。让它 10 秒,20 秒,尝试更大的超时。我认为地理编码对 Google 来说是一项敏感服务。
  • 我让它等待了 10 秒,但它仍然无法正常工作。这个问题总是从早上开始。当没有人使用它至少 16 小时时。
  • 我有 2 秒的延迟,没有超过限制,并且也遇到了这个问题(over_query_limit)。有时它有效,但很多时候无效。也许他们正在使用某种算法来确定他们没有告诉我们的滥用行为?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
相关资源
最近更新 更多