7
我使用的是Google Maps Places Autocomplete api。谷歌地圖地方自動完成加載事件
我想在顯示自動完成下拉列表之前在搜索過程中顯示一個Ajax微調器。
如何確定地點結果何時準備好?有沒有發生一些事件?
這對於糟糕的互聯網連接特別有用,因爲延遲有時可能高達5秒。用戶需要知道搜索框是一個自動完成的輸入框,然後瘋狂地按下回車進行搜索。
我使用的是Google Maps Places Autocomplete api。谷歌地圖地方自動完成加載事件
我想在顯示自動完成下拉列表之前在搜索過程中顯示一個Ajax微調器。
如何確定地點結果何時準備好?有沒有發生一些事件?
這對於糟糕的互聯網連接特別有用,因爲延遲有時可能高達5秒。用戶需要知道搜索框是一個自動完成的輸入框,然後瘋狂地按下回車進行搜索。
您可以使用自動完成服務來獲取查詢預測。它有一個回調函數。
以您提供的鏈接爲例,您可以在腳本中聲明輸入作爲全局變量。並與自動完成服務訪問它後初始化功能:
var input;
function initialize() {
...
input = document.getElementById('pac-input');
...
}
function showSpinner() {
document.getElementById('spinner').style.display = 'block';
var service = new google.maps.places.AutocompleteService();
service.getQueryPredictions({ input: input }, callback);
}
function callback(predictions, status) {
if (status != google.maps.places.PlacesServiceStatus.OK) {
document.getElementById('spinner').style.display = 'none';
return;
}
}
對於HTML文件中的變化:
<body>
<input id="pac-input" class="controls" type="text"
placeholder="Enter a location" onkeypress="showSpinner()">
<img id="spinner" src="spinner.gif" style="position:absolute; top:0; right:0; width: 250px; display: none">
</body>
我會跑這個只有一秒鐘的超時(即如果用戶的互聯網連接速度慢),否則微調看起來像一個潛意識圖像。
您是否試過編寫自己的控件而不是自動完成只使用geocoder服務?在關鍵時刻(比如在一秒鐘之後做一個地理編碼,顯示你的微調,然後在地理編碼上完全隱藏微調,並顯示一個結果選項列表。) –
@loanburger我嘗試過,自動完成它有點精簡,因爲只有一個http如果你使用api的google已經公開,那麼只需要一次調用就可以複製api提供的內容(包括你選擇的座標和信息),Google也不會阻止你的請求儘可能多的。 – Akshat
嘿,按回車搜索也是一種有效的操作,如果谷歌地圖讓我們這樣做,爲什麼你不應該讓你的用戶這樣做呢?看看這個演示,它也是這樣:https:// google -developers.appspot.com/maps/documentation/utils/geocoder/ – miguev