2012-07-03 47 views
0

我的javascript函數getLatLng在window.onload調用時效果很好。但是,當我使用處理程序來調用它時,我從地理編碼器中獲得了一個位置(NaN,NaN)。geocode在第二次調用時返回(NaN,Nan)

爲什麼當我點擊提交按鈕,但從window.onload很好地工作?修正了多個錯別字

編輯3:

<script type="text/javascript" 
    src="http://maps.googleapis.com/maps/api/js?key=MYSECRETKEYHERE&sensor=false"> 
</script>  

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" type="text/javascript"></script> 


<form id="update_info" method="post" action="{{upload_url}}" enctyp="multipart/form-data"> 
<input name="address" id="address" type="text" value="100 W Main St Lehi, UT"/> 
<input name="latlng" id = "latlng" type="text" value=""/> 
<input name="update_reseller_button" id="update_reseller_button" type="submit"> 
</form> 


<script> 

function getLatLng() 
{ 
    var geocoder = new google.maps.Geocoder(); 

    var theaddress = document.getElementById('address').value; 
    var position = new google.maps.LatLng(); 

    geocoder.geocode({'address': theaddress}, function(results, status 
    ) 
    {      
     position = results[0].geometry.location;     
     document.getElementById('latlng').value = position.toString(); 
    }); 
    return position; 
} 

$('#update_info').submit(function() 

    { 
    alert('The Position is: ' + getLatLng().toString()); 
    return true; 
    }); 

    window.onload = getLatLng(); 

</script> 

編輯:在指向錯誤的形式

EDIT 2處理器固定錯字更改,因此警報顯示的位置值

+0

什麼元素' address'?它應該包含要傳遞給地理編碼器的值,但不會出現在任何地方。 –

+0

@AndrewLeach對不起,我只是改變它,所以它現在正常工作。如果你把文本放在一個html文件中,把api鍵改爲你自己的就可以了,並彈出position的值。謝謝! – ChickenFur

回答

2

你的getLatLng函數永遠不會按預期工作,它將neve r返回地理編碼的結果,因爲地理編碼是一個異步請求。

此:

window.onload = getLatLng(); 

...會調用該函數(不onload事件,立即),該函數將執行該指令,也將返回(NAN,NAN)

0

你可以試試這個

if (status == google.maps.GeocoderStatus.OK) { 
    document.getElementById('latlng').value=results[0].geometry.location.lat()+", "+results[0].geometry.location.lng(); 
}