我在论坛上得到了一些地理位置管理员的帮助,因为我陷入了两难境地。 我刚刚意识到地理位置是异步的。我希望它在哪里同步以便于编程。 ^^
这是完成的答案,感谢制作3: http://jsfiddle.net/x4Uf4/1/
GeoManager.prototype.init = function () {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(this.updateLocation.bind(this));
} else {
console.log("Geolocation is not activated!");
}
};
GeoManager.prototype.updateLocation = function (position) {
this.pos.lat = position.coords.latitude;
this.pos.lng = position.coords.longitude;
};
var GM = new GeoManager();
GM.init();
我尝试过以某种方式使用$ .Deferred(),但它失败了。有小费吗? :)
答案 0 :(得分:0)
Arun P Johny在评论中回答了这个问题。
GeoManager = function () {
this.pos = {
lat: 0,
lng: 0
};
console.log("Geo ok...");
};
GeoManager.prototype.init = function (callback) {
var self = this;
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (position) {
self.updateLocation(position);
callback(position);
});
} else {
console.log("Geolocation is not activated!");
}
};
GeoManager.prototype.updateLocation = function (position) {
this.pos.lat = position.coords.latitude;
this.pos.lng = position.coords.longitude;
console.log(this.pos);
};
GeoManager.prototype.getLat = function () {
return this.pos.lat;
}
GeoManager.prototype.getLng = function () {
return this.pos.lng;
};
//returns an object
GeoManager.prototype.getPos = function () {
return this.pos;
};
var GM = new GeoManager();
GM.init(function () {
console.log('pos', GM.getPos())
});