【问题标题】:Saving variables outside of navigator.geolocation.getCurrentPosition? (javascript)在 navigator.geolocation.getCurrentPosition 之外保存变量? (javascript)
【发布时间】:2012-04-13 16:06:49
【问题描述】:

我正在尝试使用 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 变量中。有没有办法做到这一点?

【问题讨论】:

    标签: javascript geolocation navigator w3c-geolocation


    【解决方案1】:

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

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

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

    这就是你得到 null 的原因。 异步!异步! :)

    【讨论】:

    • 我明白了,所以 position.coords.latitude 确实存储在纬度?如果是这样,我如何将 lat 中的数据传输到另一个变量?
    • @Derek。您使用 lat 参数从 callback 调用其他函数。
    【解决方案2】:

    您可以将您的位置变量保存到文档准备好的输入隐藏字段。之后,您可以使用 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();
    

    【讨论】:

    • 设置localStorage.setItem("pos_lat",position.coords.latitude);得到localStorage.getItem("pos_lat");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-14
    • 2020-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多