2017-06-30 16 views
-1

私の開発用Googleマップについての助けが必要です。実際に、私は1つのアドレスをジオコードしようとすると、Googleは私にすべての情報を問題なく提供します。ジオコーダを使用したGoogleマップのマルチリクエスト

しかし、私はいくつかのアドレスをジオコードしようとすると、それは終了Googleは答えていないと私は応答がありません。

マイコード:

$.ajax({ 
type: "POST", 
url: _URL_SITE + "webservices...", 
dataType: "xml", 
data: parameters, 
//contentType: "application/soap+xml; charset=utf-8", 
contentType: "text/xml; charset=utf-8", 
headers: { 
    Accept: '*', 
    SOAPAction: 'http://127.0.0.1/...' 
}, 
success: function (xml) { 
    var arr = new Array(30000) 
    var cpt = 1 

    var address = []; 
    var address_id = []; 
    var codepostal = ""; 
    var i = 0; 

    $(xml).find('Table').each(function() { 
     codepostal = $(this).find('cp').text(); 
     address[i] = $(this).find('record_id').text() + '|' + codepostal.substring(0,3) + '* ' + $(this).find('commune').text() + '' + ''; 
     i++; 
    }); // fin de la fonction jquery 

    traitement(address);  
}, 
error: function() { 
    alert('error'); 
} 

})。ここ

とGoogleをresquest機能:

function traitement(addresses, callback) { 
var coords = []; 
var ville = ""; 
var cp = ""; 

var lattitude; 
var longitude; 


    for (var i = 0; i < 50; i++) { 
     currAddress = addresses[i].split("|"); 
     var geocoder = new google.maps.Geocoder(); 

     geocoder.geocode({ 'address': currAddress[1] }, function (results, status) { 
      if (status == 'OK') { 
       var coords = results[0].geometry.location 
       lattitude = coords.lat(); 
       longitude = coords.lng(); 

       var latlng = new google.maps.LatLng(lattitude, longitude); 
       geocoder.geocode({ 'latLng': latlng }, function (results, status) { 
        if (status == google.maps.GeocoderStatus.OK) { 
         var elt = results[0].address_components; 
         for (i in elt) { 
          if (elt[i].types[0] == 'postal_code') 
           cp = elt[i].short_name; 
          if (elt[i].types[0] == 'sublocality') 
           ville = elt[i].short_name; 
          if (ville == "") { 
           if (elt[i].types[0] == 'locality') 
            ville = elt[i].short_name; 
          } 

         } 
         // function which save google's information 
         Save(currAddress[0], cp, ville, longitude, lattitude) 
         return; 

        } else { alert("error lat long"); } 
       }); 

      } else { alert("error adresse"); } 
      return; 
     }); 
} 

私はasynchrone要求などに関するいくつかの記事を読んだことがある。しかし、私はGoogleが私に0答えを与える理由を理解しようとしているとき「の」私のループの繰り返し50回以上の繰り返しです。

Thans you。

+1

使用制限を超過している可能性があります。https://developers.google.com/maps/documentation/javascript/geocoding#UsageLimits – duncan

+0

Googleのキーはプレミアムなので、この問題はここにはないと思います。 –

答えて

0

Maps JavaScript APIのジオコーディングサービスを使用しています。 JavaScript APIのサービスにはセッションごとの制限もあります。ドキュメントの内容は次のとおりです。

サービス要求は、同じプロジェクトを共有するユーザーの数に関係なく、ユーザーセッションごとにレート制限されています。最初にサービスAPIをロードすると、要求の最初の割り当て量が割り当てられます。このクォータを使用すると、APIは追加リクエストのレート制限を1秒ごとに強制します。特定の期間内にリクエストが多すぎる場合、APIはOVER_QUERY_LIMIT応答コードを返します。セッションごとのレート制限により、クライアント側のサービスをバッチ要求に使用できなくなります。バッチリクエストの場合は、Maps API Webサービスを使用します。

https://developers.google.com/maps/documentation/javascript/usage

最初あなたは10個のクエリのバケツを持っています。これらのクエリを使用したら、許可されたユーザーセッションの制限内にとどまるために1秒あたり1つのクエリを送信する必要があります。

関連する問題