将Geolocation坐标存储到变量中会在控制台中返回undefined

时间:2018-04-29 01:43:14

标签: javascript geolocation

我正在使用freeCodeCamp.org上的天气应用程序项目,并且在将坐标存储到变量时遇到了一些麻烦。这是我的代码到目前为止的样子。

    hdu = fits.PrimaryHDU(mainarray)
    hdu.writeto('skymap.fits', clobber = True)

function userLocation(){ var lat = 0, lon = 0; if(navigator.geolocation){ lon = navigator.geolocation.getCurrentPosition(lonPos); lat = navigator.geolocation.getCurrentPosition(latPos); } else{ alert("Geolocation not supported by this browser"); } return lat, lon; } function latPos(position){ return position.coords.latitude; } function lonPos(position){ return position.coords.longitude; } latPos()函数内,我可以lonPos()console.log(position.coords.latitude)获取我的坐标。但是,在longitude函数中,userLocation()lat变量返回lon。我在这里错过了什么?这是项目的code pen

2 个答案:

答案 0 :(得分:0)

从头顶看我的代码我想你应该调用latPos和lonPos,如: navigator.geolocation.getCurrentPosition(龙博士())。

答案 1 :(得分:0)

navigator.geolocation.getCurrentPosition()

接受一个回调参数但它什么都不返回。

所以你最好的选择是使用全局变量

这样的事情可能有用:

编辑:似乎发生了一些api调用,所以你必须在回调中做你想做的事情。以下代码已更新

function userLocation()
{
  if(navigator.geolocation)
  {
    navigator.geolocation.getCurrentPosition(Position);
  }
  else
  { 
      alert("Geolocation not supported by this browser"); 
  }
}
function Position(pos)
{
  let lat = pos.coords.latitude;
  let lon = pos.coords.longitude;

  console.log(lat,lon);
}