Почему navigator.geolocation.watchposition не работает в setInterval()?

#react-native

#react-native

Вопрос:

Я пытаюсь получать координаты местоположения каждые 1 секунду. Но geolocation.watchposition не работает в setInterval

вот мой код:

 componentDidMount(){
  const intervalId = BackgroundTimer.setInterval(() => {
          navigator.geolocation.watchPosition((position) => {
        console.log(position.coords.latitude);
        var lat = parseFloat(position.coords.latitude);
        var lng = parseFloat(position.coords.longitude);

          console.log("lat :",lat);
          console.log("lng :",lng);
    });
  }, 1000);

  BackgroundTimer.clearInterval(intervalId);
}
  

если я удалю BackgroundTimer.setInterval метод. Это дает мне координаты. Но я хочу каждую секунду

Ответ №1:

Метод watchPosition автоматически вызовет success обратный вызов, как только позиция пользователя изменится, поэтому выполнение этого не сработает. Если вам действительно нужно получать данные каждую секунду (что может вам и не понадобиться, поскольку местоположение пользователя редко меняется за 1 секунду и это потребляет много энергии аккумулятора), вы используете setInterval, используя метод along with navigator.geolocation.getCurrentPosition .

Комментарии:

1. На самом деле я хочу получать местоположение, когда пользователь меняет позицию. Но я не смог с этим справиться