2012-03-29 8 views
6

Ich versuche, mit dem Umfang von js zu spielen, eine Variable zu ziehen aus navigator.geolocation.getCurrentPositionSpeichern von Variablen außerhalb von 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 

Der obige Code kann in der lat Variable nicht speichern position.coords.latitude wegen der Anwendungsbereich. Gibt es eine Möglichkeit, dies zu tun?

Antwort

2

Sie müssen sich an die Async \ Ajax Natur erinnern.

dies ist die Ausführungsreihenfolge des Codes:

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

Diese warum Sie null erhalten. asynchron!, asynchron! :)

+0

Ich sehe, so Position .coords.latitude ist tatsächlich in lat gespeichert? Wenn ja, wie kann ich die Daten in lat auf eine andere Variable übertragen? – Derek

+0

@Derek. Sie rufen eine andere Funktion von Callback mit dem Lat-Parameter auf. – gdoron

0

Sie können Ihre Positionsvariable speichern, um verborgenes Feld auf Dokument bereit zu geben. Danach können Sie jQuery, um wieder Geolokalisierung Wert

Javscript verwenden:

<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 

Um wieder Wert:

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

Um 'localStorage.setItem (" pos_lat ", position.coords.latitude) zu setzen;' um 'localStorage.getItem (" pos_lat ");' zu bekommen – San

Verwandte Themen