in www/geolocation.js [160:201]
watchPosition: function (successCallback, errorCallback, options) {
argscheck.checkArgs('fFO', 'geolocation.getCurrentPosition', arguments);
options = parseParameters(options);
const id = utils.createUUID();
// Tell device to get a position ASAP, and also retrieve a reference to the timeout timer generated in getCurrentPosition
timers[id] = geolocation.getCurrentPosition(successCallback, errorCallback, options);
const fail = function (e) {
clearTimeout(timers[id].timer);
const err = new PositionError(e.code, e.message);
if (errorCallback) {
errorCallback(err);
}
};
const win = function (p) {
clearTimeout(timers[id].timer);
if (options.timeout !== Infinity) {
timers[id].timer = createTimeout(fail, options.timeout);
}
const 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
);
geolocation.lastPosition = pos;
successCallback(pos);
};
exec(win, fail, 'Geolocation', 'addWatch', [id, options.enableHighAccuracy]);
return id;
},