0

我做错了什么?我试图从函数中检索纬度和经度值,但我收到的是未定义的。

var getPos = function() {
  if (navigator.geolocation) 
  {
    navigator.geolocation.getCurrentPosition(function(p) 
    {
      var lat = p.coords.latitude,
      lng = p.coords.longitude;
      return [lat, lng];        
    })

  }
}

var co = getPos(), 
    la = co[0],
    ln = co[1];
alert(la+ln);
4

1 回答 1

1

navigator.geolocation.getCurrentPosition是异步的,这就是为什么你没有收到任何东西,你可以使用回调并对返回的值采取行动,如下所示:

var getPos = function(callback) {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(p) {
      var rlat = p.coords.latitude,
      lng = p.coords.longitude;
      callback([lat, lng]);        
    })
  }
};
getPos(function(lat, long) {
  // do what you need with those
});

您可以在文档中阅读相关内容:

要获取用户的当前位置,可以调用 getCurrentPosition() 方法。这会发起一个异步请求来检测用户的位置,并查询定位硬件以获取最新信息。

于 2013-08-04T23:51:46.423 回答