второй параметр для getCurrentPosition()
является обратным вызовом для случая сбоя . В третьем параметре вы можете указать, сколько секунд браузер должен ждать ответа (в моем примере 5 секунд) и как долго должен кэшироваться результат (в моем примере 1 час).
navigator.geolocation.getCurrentPosition(function(position) {
alert('Success');
}, function() {
alert('Fail!!!');
}, {maximumAge:60000, timeout: 5000});