从函数中检索多个值

时间:2013-08-04 23:48:07

标签: javascript function return coordinates

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

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);

1 个答案:

答案 0 :(得分: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
});

您可以在the docs中了解相关内容:

  

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