【发布时间】:2015-08-17 12:02:03
【问题描述】:
我正在尝试使用 Cordova/PhoneGap 获取当前的经度和纬度。但是我在 fail 功能上遇到了这个错误:
位置检索超时。
我已将 maximumAge 设置为 5000,将 timeout 设置为 10000。
这是我正在使用的 Cordova 代码 sn-p:
getCurrentPosition:function(successCallback, errorCallback, options) {
argscheck.checkArgs('fFO', 'geolocation.getCurrentPosition', arguments);
options = parseParameters(options);
var timeoutTimer = {timer:null};
var win = function(p) {
clearTimeout(timeoutTimer.timer);
if (!(timeoutTimer.timer)) {
return;
}
var pos = new Position(
{
latitude:p.latitude,
longitude:p.longitude,
altitude:p.altitude,
accuracy:p.accuracy,
heading:p.heading,
velocity:p.velocity,
altitudeAccuracy:p.altitudeAccuracy
},
(p.timestamp === undefined ? new Date() : ((p.timestamp instanceof Date) ? p.timestamp : new Date(p.timestamp)))
);
geolocation.lastPosition = pos;
successCallback(pos);
};
var fail = function(e) {
clearTimeout(timeoutTimer.timer);
timeoutTimer.timer = null;
var err = new PositionError(e.code, e.message);
if (errorCallback) {
errorCallback(err);
}
};
if (geolocation.lastPosition && options.maximumAge && (((new Date()).getTime() - geolocation.lastPosition.timestamp.getTime()) <= options.maximumAge)) {
successCallback(geolocation.lastPosition);
} else if (options.timeout === 0) {
fail({
code:PositionError.TIMEOUT,
message:"timeout value in PositionOptions set to 0 and no cached Position object available, or cached Position object's age exceeds provided PositionOptions' maximumAge parameter."
});
} else {
if (options.timeout !== Infinity) {
timeoutTimer.timer = createTimeout(fail, options.timeout);
} else {
timeoutTimer.timer = true;
}
exec(win, fail, "Geolocation", "getLocation", [options.enableHighAccuracy, options.maximumAge]);
}
return timeoutTimer;
},
一切似乎都很好。但它不调用 successCallback 函数。我不知道我做错了什么。
【问题讨论】:
标签: javascript windows cordova windows-phone-8.1 phonegap-plugins