Scribble Maps Blog
← All posts

Scribble Maps Blog

開發人員:利用自動完成(Autocomplete)節省 Google API 額度

Google 的新 API 定價讓許多人受益。然而,如果您的應用程式使用了整套地圖功能,且擁有大量用戶,您可能會發現您的額度池開始快速減少。有兩個功能會直接消耗您的額度池,且不受每日免費配額限制,那就是自動完成(autocomplete)和地點搜尋(place search)。

如果您在 Scribble Maps API 中使用您的 Google 授權,我們已經內建了其中一些優化,但如果您是直接在 Google Maps API 之上構建自己的自訂實作,您可以進行一項簡單的更新來節省一些自動完成額度。

標準的自動完成功能會在每次輸入內容改變時發送自動完成請求。透過在輸入內容改變時加入延時(timeout),可以顯著減少所使用的額度。

這是一個非常基本的範例。

 var acTimeOut;  
 textSearchInput.onkeyup = function() {  
 clearTimeout(acTimeout);  
 acTimeout = setTimeout(function() {  
 //put auto-complete calls in here  
 }, 250);  
 }  

因此,每當用戶開始在輸入框中輸入時,自動完成功能不會立即觸發,直到出現短暫的延遲。250 毫秒的延遲可以縮短,以使自動完成觸發得更頻繁。如果用戶快速輸入「Toronto」,則只會執行一次自動完成調用,而不是在用戶猶豫時執行 8 次。

我們發現定時延遲的效果最好。其中一個關鍵點是,要確保用戶介面在他們輸入時能指示正在進行搜尋。在我們的案例中,我們使用了一個旋轉動畫(spinner)。這樣一來,如果用戶輸入速度很快而沒有看到結果,旋轉動畫會給他們足夠的停頓時間來看到結果。

需要注意的是,實作此方法符合他們目前的使用條款。此方法本質上只是限制了來自用戶的傳出自動完成調用數量。
← All posts