Проблема с Watchposition и setInterval HTML5

У меня есть следующий код, с помощью которого я могу получать координаты телефона каждые 15 секунд.

Проблема в том, что если телефон заблокирован, функция setInterval перестает работать и больше не сохраняет мне координаты до тех пор, пока телефон не будет разблокирован.

function setGeolocation() {
var geolocation = window.navigator.geolocation.watchPosition( 
    function ( position ) {
        var location=new google.maps.LatLng(position.coords.latitude,position.coords.longitude)
  coordenadasRuta.push(location);
    },
    function () { /*error*/ }, {
        maximumAge: 250, 
        enableHighAccuracy: true
    } 
);

window.setTimeout( function () {
        window.navigator.geolocation.clearWatch( geolocation ) 
    }, 
    5000
   );
}; 

setGeolocation();
window.setInterval( function () { 
    setGeolocation();
}, 15000);

Эти координаты затем сохраняются для создания PolyLine, поэтому, если он блокируется, он не сохраняет маршрут правильно.

Есть ли у вас идеи, почему это происходит?

1
задан 08.03.2017, 19:32
1 ответ

Utilza navigator.geolocation.watchPosition(showLocation, errorHandler, options)

, Где options - объект, что ты можешь перемещать его timeout.

Пример:

navigator.geolocation.watchPosition(showLocation, errorHandler, options)

var options = {
        timeout: 1000
    };

function errorHandler(err) {
        if (err.code == 1) {
            $("#status").append("Error: Access is denied!<br>");
        } else if (err.code == 2) {
            $("#status").append("Error: Position is unavailable!<br>");
        }
    }
function showLocation(position) {
        console.log(position);
        var d = new Date();
        $("#status").append(d + "--> " + position.coords.longitude + " - " + position.coords.latitude + " -- " + position.coords.speed + "<br>");
    }
0
ответ дан 24.11.2019, 10:43