地理定位功能中的 JavaScript 变量范围

Posted

技术标签:

【中文标题】地理定位功能中的 JavaScript 变量范围【英文标题】:JavaScript variable scope in geolocation function 【发布时间】:2012-02-03 00:36:10 【问题描述】:

我正在尝试使用 javascript 来获取用户的地理位置,这样我就可以将该信息用作另一部分 javascript 代码中的参数,但是我无法获得正确的范围。

这是我的代码。在成功函数内执行警报工作正常,但如果我尝试在函数外的任何地方访问 var lat,我会得到未定义的值。我将如何解决这个问题?

var lat; var long;
function success(position) 
lat = position.coords.latitude;
long = position.coords.longitude;
alert(lat);


function error(msg) 



if (navigator.geolocation) 
  navigator.geolocation.getCurrentPosition(success, error);

 else 
  error('not supported');

【问题讨论】:

欢迎来到 async 的精彩世界!你不能那样做。 我没有看到您在 success() 之外尝试引用 lat 的位置。 @gilly3 - 我在 if else 语句之后有它,然后将它移到了成功函数中。它仅适用于成功函数。我想我正在寻找某种方法来等待返回值,然后再尝试访问它 【参考方案1】:

您希望您的代码像这样工作:

navigator.geolocation.getCurrentPosition(success, error); 
alert("Your position is " + lat + ", " + long + ".");
// do some more stuff with lat and long

但是,success() 还没有被调用,所以 lat 仍然是未定义的。 这就是您的成功处理程序的用途。在您检索到位置后需要执行的所有代码都在成功处理程序中。这会起作用:

navigator.geolocation.getCurrentPosition(function (position) 
    success(position);
    alert("Your position is " + lat + ", " + long + ".");
    // do some more stuff with lat and long
, error);

【讨论】:

以上是关于地理定位功能中的 JavaScript 变量范围的主要内容,如果未能解决你的问题,请参考以下文章

温故而知新-Javascript使用地理定位

准确的地理位置范围变量

“原生”地理定位与“基于PhoneGap”的地理定位功能

没有任何地图的Javascript地理定位[关闭]

Javascript学习总结 - html5实现定位地理位置

Javascript地理定位不适用于更新的android chrome