2012-03-29 15 views
6

Estoy tratando de jugar con el alcance de JS para tirar de una variable de navigator.geolocation.getCurrentPositionGuardando variables fuera de 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 

El código anterior no se puede almacenar en la variable position.coords.latitude lat debido el alcance ¿Hay alguna forma de hacer esto?

Respuesta

2

Tienes que recordar la naturaleza async \ ajax.

este es el orden de ejecución de su código:

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

Es por esto que se obtiene nula. async!, async! :)

+0

veo, por lo que la posición .coords.latitude de hecho se almacena en lat? Si es así, ¿cuándo puedo transferir los datos en lat a otra variable? – Derek

+0

@Derek. llama a otra función desde 'callback' con el parámetro' lat'. – gdoron

0

usted puede guardar su posición variable de campo oculto de entrada en el documento listo. Después de eso, se puede usar jQuery para volver valor Geolocalización

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 

para volver valor:

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

Para establecer 'localStorage.setItem (" pos_lat ", position.coords.latitude);' para obtener 'localStorage.getItem (" pos_lat ");' – San

Cuestiones relacionadas