0

私はStackOverflowを調べて、すべてのWebリソースを調べていますが、これを行う方法を明確にしたものはありません。

ユーザーの現在位置の緯度番号を取得したいだけです。1つのメソッドを実行するだけでそれを実行したいgetLat()のです。それだけです。

動作しません。戻るようにすると、未定義になり続けます。変数を変更しようとしましたが、それも失敗します。どこのフォーラムでも、「非同期」であり、APIによってこのようなgetLat()を取得できないため、賢くする必要があると言われていますが、方法があるはずです。それが特に何を意味するのか理解できません。これについてアドバイスをもらいたいと思います。

function getLat(){
var lat1;
function getLocation() {
    navigator.geolocation.getCurrentPosition (function (position){
        var coords = position.coords.latitude;
        lat1 = coords; 
    })
}
return lat1;
}

function getLong(){
var lng1;
function getLocation() {
    navigator.geolocation.getCurrentPosition (function (position){
        var coords = position.coords.longitude;
        lat1 = coords; 
    })
}
return lng1;
}
4

1 に答える 1

0

getLocation関数が呼び出されていません。したがって、lat1andlng1は宣言されていますが、それ以降は値がありませんundefined

また、getCurrentPositionは非同期です。技術的には、データの処理が完了すると、データを返すのではなく、「todo」のような関数を渡します。

代わりにこれを試してください:

//define a function receiving a callback
function getLat(callback){

    //fire the getCurrentposition function
    navigator.geolocation.getCurrentPosition(function(position){

        //fire the callback that was passed, 
        //passing to it the latitude
        callback.call(this,position.coords.latitude);
    });
}

//now we use the function
getLat(function(lat){
    //do everything else via the lat variable here!
});

//now do the same for getLng
于 2012-10-19T11:32:33.277 に答える