6

我正在尝试使用 js 的范围从 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

上面的代码由于作用域的原因,无法将 position.coords.latitude 存储在 lat 变量中。有没有办法做到这一点?

4

2 回答 2

2

您必须记住 async\ajax 的性质。

这是您的代码的执行顺序:

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

这就是为什么你得到空值。异步!异步!:)

于 2012-03-29T23:31:20.887 回答
0

您可以保存您的位置变量以输入文档准备好的隐藏字段。之后,您可以使用 jQuery 取回 Geolocation 值

Javascript:

<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

要取回价值:

jQuery('#pos_lat').val();
于 2015-07-19T05:55:57.790 回答