2015-10-17 69 views
0

我想知道,如果有人有同樣的問題我有時:谷歌地圖地理編碼的API不匹配文檔

我查詢谷歌的服務器和地理編碼一些地方有setTimeout()環路類似於以下內容:

//... 

var loop = function() {     
      setTimeout(function() { 
       // Here I do the geocode request and create a CustomOverlay which I then show on the map. 
       setTimeout(loop, 0); // Let the browser do some other work, e.g. rendering 
      }, 125); 
}; 
loop(); 

//... 

現在,我已經超時設置爲125毫秒,這意味着至多8個請求(8 * 125 = 1000)在1秒內製成。但是有時我會在腳本執行後的一段時間後得到Google的OVER_QUERY_LIMIT狀態碼。

現在的文檔(https://developers.google.com/maps/documentation/geocoding/usage-limits)說:

標準API的用戶:每天

  • 2500個免費請求每秒
  • 10個請求

    爲什麼OVER_QUERY_LIMIT在我的情況下返回?是否因爲我還創建了自定義Overlay?我對每個結果使用方法overlayProjection.fromLatLngToDivPixel()將從Geocoder返回的latlng轉換爲像素並在地圖上繪製覆蓋圖。也許是因爲它?

    感謝您的關注。

  • +0

    應該考慮存儲地理編碼數據......那麼您只需要對其進行地址解析一次 – charlietfl

    +0

    您有一個標準或高級帳戶? –

    +0

    您不允許永久存儲地理編碼結果,只能根據使用條款將其「緩存」一段時間。 – geocodezip

    回答

    2

    長期來看,每天2500個請求可以達到34.56秒/請求。每秒10個請求速率限制僅在短時間內有效(大約10個請求)。

    (24小時/天×60分鐘/小時×60秒/分鐘)/ 2500 =請求34.56秒/請求

    每天2500個請求是硬限制。每秒10個請求可以根據服務器負載和其他事情(包括您最近的請求歷史記錄)進行更改。

    +0

    那麼,我想他們應該指定**每秒約10個請求(可能會減少取決於服務器負載等)**,無論如何,我沒有達到2500的請求限制。無論如何,我不是在責怪他們,他們在文檔上做了很棒的工作,他們真的可以理解。 – tonix

    +0

    無論如何,創建自定義疊加層是否會向Google服務器添加額外的請求開銷?例如,'overlayProjection.fromLatLngToDivPixel()'方法?只需知道... – tonix

    +0

    疊加層的創建對任何配額都沒有影響。 – geocodezip