2017-06-30 43 views
-1

我需要一些關於我的谷歌地圖發展的幫助。事實上,當我嘗試對一個地址進行地址解析時,谷歌給我所有信息都沒有問題。谷歌地圖多地址解析請求

但是,當我嘗試對幾個地址進行地址解析時,它的結束谷歌沒有回答,我沒有反應。

我的代碼:

$.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'); 
} 

});

,在這裏它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要求等一些職位,但我試圖理解爲什麼谷歌給了我答案0時,我的循環「爲」的迭代超過50個重複。

Thans you。

+1

你可能超過了使用限制:https://developers.google.com/maps/documentation/javascript/geocoding#UsageLimits – duncan

+0

我的谷歌關鍵是prenium,所以我不認爲這個問題是在這裏。 –

回答

0

您正在使用Maps JavaScript API的地理編碼服務。 JavaScript API中的服務也具有每個會話限制。該文檔說:

無論有多少用戶共享同一項目,服務請求的速率限制爲每個用戶會話。當你第一次加載服務API時,你被分配了一個初始的請求配額。一旦您使用此配額,API將按照每秒的額外請求強制執行速率限制。如果在特定時間段內發出的請求太多,API將返回一個OVER_QUERY_LIMIT響應代碼。每會話速率限制可防止客戶端服務用於批量請求。對於批量請求,請使用Maps API Web服務。

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

最初你有10個查詢一桶。一旦使用了這些查詢,您必須每秒發送1個查詢以保持允許的用戶會話限制。