У меня есть функция, которая получает текущее местоположение зрителя. Тем не менее, я пытаюсь сделать так, чтобы он снова и снова получал текущее местоположение зрителя каждый раз, когда вызывается функция. Причина, по которой я хочу это сделать, заключается в том, что моя веб-страница пытается запросить текущее местоположение при загрузке. Если зритель говорит «нет», просматривает мою веб-страницу и передумывает, мне нужно, чтобы он мог повторить попытку, не перезагружая страницу. Вот что у меня так далеко:
function getCurrentLocation(callback) {
if ( navigator.geolocation ) {
if ( typeof(locationId) == 'undefined' || locationId <= 0 ) navigator.geolocation.clearWatch(locationId);
locationId = navigator.geolocation.getCurrentPosition(function(position) {
currLocation = position.coords;
console.log('navigator - success');
if ( typeof(callback) != 'undefined' ) callback();
},function(){
console.log('navigator - fail');
if ( typeof(callback) != 'undefined' ) callback();
});
} else if (google.gears ) {
var geo = google.gears.factory.create('beta.geolocation');
if ( typeof(locationId) == 'undefined' || locationId <= 0 ) geo.clearWatch(locationId);
locationId = geo.getCurrentPosition(function(position){
currLocation = position;
console.log('gears - success');
if ( typeof(callback) != 'undefined' ) callback();
}, function(){
console.log('gears - fail');
if ( typeof(callback) != 'undefined' ) callback();
});
}
return currLocation;
}
По какой-то странной причине после нажатия кнопки «Не разрешать» навигатор всегда вызывает функцию сбоя и никогда не пытается снова запросить текущее местоположение. Как мне заставить его спросить снова?