На мобильном устройстве .getCurrentPosition()
очень неточно. Использование .watchPosition()
более точно, но для получения лучшего результата требуется около пяти секунд. После этого он расходует заряд батареи, чтобы поддерживать его активным.
Проверяет позицию каждые 15 секунд, используя .watchPosition()
, и останавливает проверку через пять секунд, используя .clearWatch()
.
Демо: https://jsfiddle.net/ThinkingStiff/phabq6r3/
Сценарий:
var latitude, longitude, accuracy;
function setGeolocation() {
var geolocation = window.navigator.geolocation.watchPosition(
function ( position ) {
latitude = position.coords.latitude;
longitude = position.coords.longitude;
accuracy = position.coords.accuracy;
document.getElementById( 'result' ).innerHTML +=
'lat: ' + latitude + ', '
+ 'lng: ' + longitude + ', '
+ 'accuracy: ' + accuracy + '<br />';
},
function () { /*error*/ }, {
maximumAge: 250,
enableHighAccuracy: true
}
);
window.setTimeout( function () {
window.navigator.geolocation.clearWatch( geolocation )
},
5000 //stop checking after 5 seconds
);
};
setGeolocation();
window.setInterval( function () {
setGeolocation();
},
15000 //check every 15 seconds
);
HTML:
<div id="result"></div>