我在android开发中使用phonegap。我写了PoC,但我无法弄清楚为什么它不会改变profile变量的纬度。实际上
alert(profile.latitude);
在
之前运行geoCode.setLocation();
这是我的代码;
document.addEventListener("deviceready", onDeviceReady, false);
var profile = {
name: "",
id: "red",
latitude: "xx",
longtitude: "",
setCoordinates: function (latit, longt) {
this.latitude = latit;
this.longtitude = longt;
}
};
var geoCode = {
onSuccess: function (position) {
profile.latitude = position.coords.latitude;
},
onError: function (error) {
},
setLocation : function () {
navigator.geolocation.getCurrentPosition(this.onSuccess, this.onError);
}
};
// Wait for PhoneGap to load
//
function onDeviceReady() {
geoCode.setLocation();
//alert("2");
alert(profile.latitude);
};
提前致谢
答案 0 :(得分:1)
navigator.geolocation.getCurrentPosition是一个异步函数。您需要执行以下操作:
var geoCode = {
setLocation : function (callback) {
onSuccess: function (position) {
callback(position.coords.latitude);
},
onError: function (error) {
},
navigator.geolocation.getCurrentPosition(onSuccess, onError);
}
};
// Wait for PhoneGap to load
//
function onDeviceReady() {
geoCode.setLocation(function(latitude) {
alert(latitude);
});
};
答案 1 :(得分:0)
很简单,因为对navigator.geolocation.getCurrentPosition()的调用是异步调用。从而继续执行程序,您将看到警报。在显示警报后的某个时间,调用geoCode类的onSuccess调用,更新profile.latitude值。