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)我可以在控制台中看到对象、方法和两个属性。

但是,当我尝试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 回答