2012-03-29 21 views
6

Ben navigator.geolocation.getCurrentPositionNavigator.geolocation.getCurrentPosition dışında değişkenleri kaydetme? (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 

dışında bir değişkeni çekmek için js kapsamı ile oynamaya çalışıyorum yukarıdaki kod lat değişkende position.coords.latitude depolayamıyor nedeniyle kapsamı. Bunu yapmanın bir yolu var mı?

cevap

2

Async \ ajax niteliğini hatırlamanız gerekir.

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

Bu boş olsun neden:

bu

kodunuzun yürütme sırasıdır. async!, async! :)

+0

, böylece pozisyon Bundan sonra, Coğrafi Konum değerini

Javscript geri almak için jQuery kullanabilirsiniz .coords.latitude gerçekten de Latte depolanır? Öyleyse, verileri lat olarak başka bir değişkene nasıl aktarabilirim? – Derek

+0

@ Derek. 'lat' parametresinden 'callback' işlevinden başka bir işlev çağırırsınız. – gdoron

0

Konum değişkeninizi, belgedeki gizli alanı girmek için kaydedebilirsiniz.

<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 

geri almak için değeri:

görüyorum
jQuery('#pos_lat').val(); 
+0

'localStorage.setItem (" pos_lat ", position.coords.latitude);' localStorage.getItem ("pos_lat") almak için ''; – San

İlgili konular