0

変数を定義する関数を記述し、その関数を別の関数内で呼び出して変数を取得できるようにしようとしています。

これが私がしたことです:

function getLat(){
  navigator.geolocation.getCurrentPosition(function(lat){
    var latCoord = lat.coords.latitude;
    return latCoord;
  });
}
function getLong(){
  navigator.geolocation.getCurrentPosition(function(lon){
    var longCoord = lon.coords.latitude;
    return longCoord;
  });
}
function getImage(){
  var the_lat = getLat(),
      the_lon = getLong();
  console.log(the_lat + ' ' + the_lon);
}
getImage();

ご覧のとおり、私には機能getLat()がありgetLong()、緯度と経度を取得します。次に、変数をgetImage()呼び出しgetLat()て、その変数にlatCoordを割り当てることができるようにします。私はこれをしたいreturn latCoord;と思っていましたが、私は間違っていました。

これは可能ですか、それとも別の方法で行う必要がありますか?もしそうなら、私はこれをどのように行うべきかの例を見ることができますか?

これがjsbinですhttp://jsbin.com/ulelix/edit

何かを明確にする必要がある場合、または情報を追加する必要がある場合はお知らせください。必要に応じて追加します。探し回ったのですが、探している答えが得られないようです。どんな助けでもありがたいです、ありがとう!

4

1 に答える 1

1

navigator.geolocation.getCurrentPositionメソッドは非同期です。undefinedコールバックが実行される前に関数が戻ってきました。

そのメソッドからの応答に依存するコードをコールバックに移動する必要があります。

緯度と経度の両方がコールバックで利用できるため、2つの関数を1つに結合することをお勧めします。

function getLatLng(){
    navigator.geolocation.getCurrentPosition(function(pos) {
        var lat = pos.coords.latitude,
            lng = post.coords.longitude;

        //Do stuff relying on lat/lng here...
    });
}
于 2012-06-14T19:58:07.850 に答える