2012-03-29 59 views
6

我試圖與JS的範圍打拉出來可變navigator.geolocation.getCurrentPosition保存navigator.geolocation.getCurrentPosition之外的變量? (JavaScript)的

var lat; 
function callback (position) { 
    lat = position.coords.latitude; 
} 
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000}); 
// after getCurrentPosition succeeds 
alert(lat); // this alerts null 

的上面的代碼不能position.coords.latitude存儲在LAT變量,因爲範圍。有沒有辦法做到這一點?

回答

2

你必須記住async \ ajax的性質。

這是你的代碼的執行順序:

var lat; 
alert(lat); // this alerts null 
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000}); 
function callback (position) { 
    lat = position.coords.latitude; 
} 

這爲什麼你空。 異步!async! :)

+0

我明白了,所以位置.coords.latitude的確存儲在lat?如果是這樣的話,我怎樣才能將數據轉換爲另一個變量? – Derek 2012-03-29 23:34:15

+0

@Derek。你用'lat'參數調用'callback'中的其他函數。 – gdoron 2012-03-29 23:57:28

0

您可以保存您的位置變量,以便在準備好文檔時輸入隱藏字段。在此之後,你可以使用jQuery找回地理位置值

Javscript:

<script> 
var lat; 
alert(lat); // this alerts null 
navigator.geolocation.getCurrentPosition(callback,fail,{timeout:10000}); 
function callback (position) { 
    jQuery('#pos_lat').val(position.coords.latitude); 
} 
</script> 

HTML:

<input hidden id='pos_lat' value='' /> 
    //value = position latitude on load 

要返回值:

jQuery('#pos_lat').val(); 
+0

設置'localStorage.setItem(「pos_lat」,position.coords.latitude);'獲得'localStorage.getItem(「pos_lat」);'' – San 2016-04-29 12:32:53