由于over_query_limit,Google地理编码器失败

时间:2012-05-13 20:09:02

标签: javascript google-maps-api-3

我正在使用反向地理编码填充四个表单字段。表单填写正确但后来我收到一个错误,声明OVER_QUERY_LIMIT。在检查chrome的JS控制台时,我看到在收到错误消息之前已经进行了五次相同的调用。我不确定为什么我的代码会发出多个请求。有人可以指出我应该在我的循环中在codeLatLng函数中改变什么。这很可能是问题所在。

var geocoder;

function getCity() {
    geocoder = new google.maps.Geocoder();  
  }


  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
} 
//Get the latitude and the longitude;
function successFunction(position) {
    var lat = position.coords.latitude;
    var lng = position.coords.longitude;
    //alert("Success funciton" + lat + " " + lng);
    codeLatLng(lat, lng)    
}

function errorFunction(){
    AppMobi.notification.alert("For the best user experience, please ensure your device GPS and geolocation settings are enabled.","Geolocation disabled","OK");
}

    function codeLatLng(lat, lng) {
    //alert("codeLatLng fn started");
    var latlng = new google.maps.LatLng(lat, lng);
    geocoder.geocode({'latLng': latlng}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
      console.log(results)
        if (results[1]) {
         //formatted address
     //alert(results[0].formatted_address) //Complete address
    $("#address1").val(results[0].formatted_address);
    } else {
      alert("No results found. Please enter the data manually.");
    }
  } else {
    alert("Geocoder failed due to: " + status +".  Please enter the data manually." );
  }
});

非常感谢提前。

1 个答案:

答案 0 :(得分:3)

使用Google Maps API网络服务受限于每天允许的请求数量。

OVER_QUERY_LIMIT是由此限制造成的。

您可以在此处找到更多信息:

https://developers.google.com/maps/documentation/business/articles/usage_limits

当Google响应此错误时,您可以尝试等待超过2秒,例如,使用setTimeout。

结果[0] .address_components [i]可能是对函数调用的引用。