4

逆ジオコーディングを使用して4つのフォームフィールドに入力しています。フォームは正しく入力されますが、OVER_QUERY_LIMITというエラーが表示されます。ChromeのJSコンソールを確認すると、エラーメッセージを受信する前に、5つの同じ呼び出しが行われたことがわかります。私のコードがいくつかのリクエストを行っている理由がわかりません。誰かが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." );
  }
});

よろしくお願いします。

4

1 に答える 1

3

Google Maps API Web サービスの使用には、許可される 1 日あたりのリクエスト数に関する特定の制限が適用されます。

OVER_QUERY_LIMIT は、この制限によって発生します。

詳細については、次を参照してください。

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

Google がこのエラー (setTimeout など) で応答する場合は、2 秒以上待機してみてください。

results[0].address_components[i] が関数呼び出しへの参照になる可能性があります。

于 2012-05-13T20:23:32.877 に答える