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 に答える