2015-10-20 16 views
0

這是我得到運行下面的代碼錯誤:google.maps.places.Autocomplete通話模糊,導致「無法讀取屬性‘幾何’的未定義」

錯誤:遺漏的類型錯誤:無法讀取屬性的幾何「未定義

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script> 
 
<script type="text/javascript"> 
 
var places = new google.maps.places.Autocomplete(document.getElementById('bodyOfWater')); 
 
google.maps.event.addDomListener(window, 'load', function() { 
 
\t //On select of the location 
 
\t google.maps.event.addListener(places, 'place_changed', function() { 
 
\t \t var place = places.getPlace(); 
 
\t \t alert(place.geometry.location.lat()); 
 
\t }); 
 
\t 
 
\t // Trigger search on blur 
 
\t /*=====================*/ 
 
\t /* PROBLEM IN FOLLOWING CODE*/ 
 
\t /*=====================*/ 
 
\t google.maps.event.addDomListener(document.getElementById('bodyOfWater'), 'blur', function() { 
 
\t \t var place = places.getPlace(); 
 
\t \t alert(place.geometry.location.lat());; 
 
\t }); 
 
}); 
 
</script>

第一部分正常工作,當我真正從谷歌選擇的地方,但是當我嘗試在模糊觸發同樣的動作,看起來像我不明白的地方回來。

回答

0

places API是異步的。從服務器返回後(當place_changed事件觸發時),您無法獲得結果。

+0

所以沒有辦法觸發相同的事件?我需要這樣做,如果用戶只是在一個盒子裏輸入東西,並沒有選擇任何東西。 – Michael

+0

不,請看這個例子:https://developers.google.com/maps/documentation/javascript/places。首先你發送一個請求,然後你添加一個回調。當Google地圖準備好請求時,它會觸發回調並給出結果。這是JavaScript的方式(就像Ajax做同樣的事情)。 –

+0

沒問題。那麼當用戶進入皇宮但是沒有從列表中選擇一個時,我怎麼會觸發place_changed事件呢? – Michael

相關問題