2011-10-31 79 views
4

我正在爲我公司使用的內部工具之一添加一個映射函數。長話短說,我們有一個需要放置在地圖上的大約50個地址的列表。我使用的是Google地圖,因此它是交互式地圖,然後是用於地理編碼和添加標記的JavaScript API。按照Google's documentation,我被限制爲每秒10個請求。所以,我已經通過地址數組來設置我的JavaScript來攪動,並在每個批次之間加入延遲。谷歌地圖地理編碼API錯誤率限制

所以我的功能是設置有兩個confif變量我可以設置:addressesPerBatch和timeoutPerBatch - 很明顯了每個人應該做的。你會認爲,從谷歌的文件來看,我會被允許

addressesPerBatch = 10; 
timeoutPerBatch = 1000; //That's in milliseconds 

我當然不是。當我快速發送請求時,我很快就達到了費率限制。甜蜜點我發現其實是圍繞着」

addressesPerBatch = 2; 
timeoutPerBatch = 2000; 

所以,這是我的javascript問題或與谷歌的速率限制?

我已經創建了一個的jsfiddle,以便在出現問題更好地瞭解我在做什麼: http://jsfiddle.net/Qt4gV/1/

+1

如何僅在您點擊OVER_QUERY_LIMIT時添加休眠/重試,因此您不必嘗試調整配置以準確地匹配API限制。 –

+0

@ScottWegner這實際上是一個[建議的谷歌方法](http://code.google.com/apis/maps/articles/phpsqlgeocode.html#geocodephp)。我考慮過這樣做,(可能會),但它仍然沒有回答根本問題。我* *應該被允許每秒10個請求,但現在我只獲得1次每秒。 – jwegner

+1

您在上面引用的速率限制文檔僅限於「Google Maps API Premier」。此處描述的一般使用限制不會引用特定的每分鐘限制:http://code.google.com/apis/maps/faq.html#usagelimits。請注意,由於您將調用作爲客戶端JavaScript進行調用,因此配額適用於客戶端。這對您很有幫助,除非用戶位於許多客戶端使用相同配額的代理之後:http://code.google.com/apis/maps/articles/geocodestrat.html#quota-limits –

回答

0

當我進行大批量的地理編碼時,我在每次查詢之間以大約0.25秒的時間間隔進行串行連接,這並沒有引起問題,而是仍然足夠快,數據庫更新時間比地理編碼的請求/響應時間要長得多

此外,如果您擁有Premier授權許可,請確保遵循關於在請求中添加簽名的指示,或者您的請求將像您使用免費許可一樣處理。當我在我的開發服務器上進行少量測試時,我最大限度地利用了我的日常限制,從而學會了這一難題!