Javascript 函数变量范围直通地理定位

标签 javascript variables geolocation scope

我只是想从 HTML5 的 geolocation.getCurrentPosition 函数中获取变量。但是,我在函数外部定义变量时遇到了很多困难。

该函数使用以下代码工作:

<script>
var latitude;
var longitude;
var accuracy;
var altitude;
var altitudeAccuracy;
var heading;
var speed;

if (navigator.geolocation){
  navigator.geolocation.getCurrentPosition(  
    function (position) {
      latitude = position.coords.latitude;
      longitude = position.coords.longitude;
      alert(longitude)
      accuracy = position.coords.accuracy;
      altitudeAccuracy = position.coords.altitudeAccuracy;
      heading = position.coords.heading;
      speed = position.coords.speed;
    }
  );
}

// alert(latitude);

在这里我看到 alert(longitude) 返回一个数值。但是,当我注释掉该行并取消注释 alert(latitude) 时——我收到“未定义”警报。

任何帮助将不胜感激!谢谢。

最佳答案

因为getCurrentPosition是一个异步调用。

您需要等待回调触发,然后才能访问它检索的值。

function nextStep(){
    alert(latitude);
}

navigator.geolocation.getCurrentPosition(  
    function (position) {
      latitude = position.coords.latitude;
      longitude = position.coords.longitude;
      alert(longitude)
      accuracy = position.coords.accuracy;
      altitudeAccuracy = position.coords.altitudeAccuracy;
      heading = position.coords.heading;
      speed = position.coords.speed;
      nextStep();
    }
);

关于Javascript 函数变量范围直通地理定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14199768/

相关文章:

c - 我希望能够向自身添加变量,以便它们与我分配给它们的值相匹配

ios - 当用户退出区域时删除触发的基于位置的通知

html - Opera 中的地理定位实现

javascript - 如何使用javascript将数字划分为数组中包含的特定值

javascript - 这种 sanitizer 容易受到 XSS 攻击吗?

javascript - 使用传递给函数的变量在 javascript 循环中添加延迟

dns - 如何模拟从不同位置浏览?

javascript - 为什么使用 &lt;input type ="file"/> 时 Angular 绑定(bind)失败?

javascript - Internet Explorer 和 Chrome 中事件更改的差异

c++ - Binary 处理器如何区分两个相同字节大小的变量类型