В моем приложении Ionic я реализовал функцию геолокации watchPosition со следующими параметрами. Мои параметры настроены на срабатывание каждые 10 секунд, но срабатывает каждую секунду. И часто он срабатывает два раза в секунду.
function watchPosition() {
var options = {
maximumAge: 10000,
timeout: 10000,
enableHighAccuracy: true,
}
watchID = navigator.geolocation.watchPosition(onSuccess, onError, options);
function onSuccess(pos) {
...
}
function onError(error) {
...
}
}
И когда мое устройство готово, я запускаю функцию watchPosition с помощью addListener:
Исходный звонок был такой:
var watchID = null;
document.addEventListener ("deviceready", watchPosition);
Затем я изменился на это:
document.addEventListener("deviceready",setupWatch) ;
function setupWatch() {
// global var here so it can be cleared on logout (or whenever).
activeWatch = setInterval(watchPosition, 5000);
}
И он все еще стреляет каждую секунду.
Затем я заменил addEventListener
просто на: я понял, что eventListener уже был внутри Ionics $ionicPlatform.ready() { .. }
, таким образом, eventListener не был нужен. Однако, просто вызов этого теперь вызывает watchPosition примерно 5 раз в секунду, а не один раз в 5 секунд .:
setupWatch() ;
Дополнительный вопрос, касающийся лучших практик для watchPosition. Какой идеальный тайм-аут для продолжения вызова этой функции ... нормально ли каждую секунду, слишком ли много нагрузки / обработки, быстрее ли разряжаются батареи и т. Д.?