1

地理位置情報を使用して、後でアプリケーションで使用できるオブジェクトに現在の緯度と経度を追加しようとしています。

    var loc = {
    get_latlong: function() {
        var self = this,
            update_loc = function(position) {
                self.latitude = position.coords.latitude;
                self.longitude = position.coords.longitude;
            };

        win.navigator.geolocation.getCurrentPosition(update_loc);
    }
}

実行するとloc.get_latlong()console.log(loc)オブジェクト、メソッド、および 2 つのプロパティがコンソールに表示されます。

ただし、試してみるとconsole.log(loc.latitude)未定義console.log(loc.longitude)です。

それは一体何ですか?

4

1 に答える 1

2

他の人が言ったように、非同期呼び出しの結果がすぐに来るとは期待できないため、コールバックを使用する必要があります。このようなもの:

var loc = {
    get_latlong: function (callback) {
        var self = this,
            update_loc = function (position) {
                self.latitude = position.coords.latitude;
                self.longitude = position.coords.longitude;
                callback(self);
            }

        win.navigator.geolocation.getCurrentPosition(update_loc);
    }
}

次に、次を使用して呼び出します。

loc.get_latlong(function(loc) {
    console.log(loc.latitude);
    console.log(loc.longitude);
});
于 2013-07-02T22:50:44.420 に答える