最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

Saving variables outside of navigator.geolocation.getCurrentPosition? (javascript) - Stack Overflow

programmeradmin1浏览0评论

I'm trying to play with the scope of js to pull a variable out of navigator.geolocation.getCurrentPosition

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

The above code cannot store position.coords.latitude in the lat variable because of the scope. Is there a way to do this?

I'm trying to play with the scope of js to pull a variable out of navigator.geolocation.getCurrentPosition

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

The above code cannot store position.coords.latitude in the lat variable because of the scope. Is there a way to do this?

Share Improve this question asked Mar 29, 2012 at 23:28 DerekDerek 12.4k31 gold badges106 silver badges166 bronze badges
Add a ment  | 

2 Answers 2

Reset to default 2

You have to remember the async\ajax nature.

this is the execution order of your code:

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

This why you get null. async!, async! :)

You can save your Position variable to input hidden field on document ready. After that, you can use jQuery to get back Geolocation value

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

To get back value:

jQuery('#pos_lat').val();
发布评论

评论列表(0)

  1. 暂无评论