2012-03-29 16 views
6

Próbuję grać z zakresu js wyciągnąć zmienną z navigator.geolocation.getCurrentPositionZapisywanie zmiennych poza 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 

Powyższy kod nie może przechowywać position.coords.latitude w zmiennej łac powodu zakres. Czy jest jakiś sposób na zrobienie tego?

Odpowiedz

2

Musisz pamiętać charakter async \ ajax.

jest kolejność wykonywania kodu:

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

To dlaczego masz zerowy. async!, async! :)

+0

widzę, więc pozycję .coords.latitude rzeczywiście jest przechowywany w łacie? Jeśli tak, kiedy, w jaki sposób mogę przenieść dane z lat do innej zmiennej? – Derek

+0

@Derek. wywołujesz inną funkcję z 'callback' za pomocą parametru' lat'. – gdoron

0

Możesz zapisać swoją zmienną Pozycji, aby wprowadzić ukryte pole na gotowym dokumencie. Po tym, można użyć jQuery wrócić wartość geolokalizacji

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 

Aby wrócić wartość:

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

Aby ustawić 'localStorage.setItem (" pos_lat ", position.coords.latitude);', aby uzyskać 'localStorage.getItem (" pos_lat ");' – San

Powiązane problemy