2012-03-29 12 views
6

sto cercando di giocare con l'ambito di js per tirare una variabile di navigator.geolocation.getCurrentPositionSalvataggio di variabili all'esterno di 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 

Il codice di cui sopra non riesco a memorizzare position.coords.latitude nella variabile a causa di lat l'ambito. C'è un modo per fare questo?

risposta

2

È necessario ricordare la natura asincrona.

questo è l'ordine di esecuzione del codice:

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

Questo perché si ottiene nulla. async!, async! :)

+0

Vedo, quindi la posizione .coords.latitude è effettivamente memorizzato in lat? In caso affermativo, come posso trasferire i dati in lat ad un'altra variabile? – Derek

+0

@Derek. chiamate altre funzioni da 'callback' con il parametro' lat'. – gdoron

0

È possibile salvare la variabile di posizione per inserire il campo nascosto sul documento pronto. Dopo di che, è possibile utilizzare jQuery per tornare valore Geolocalizzazione

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 

per tornare valore:

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

Per impostare 'localStorage.setItem (" pos_lat ", position.coords.latitude);' per ottenere 'localStorage.getItem (" pos_lat ");' – San

Problemi correlati