Есть ли способ определить, предоставил ли пользователь разрешение на использование navigator.geolocation?
Помимо установки cookie в первый раз, существует ли способ определить, предоставил ли пользователь разрешение для navigator.geolocation, чтобы вернуть lat/long браузера?
Если есть, что это такое и одинаково для всех браузеров или разных во всех браузерах?
Этот вопрос был частично ответил в другом месте
В соответствии с GeoLocation API - Chrome/Safari - Управление разрешениями и визуальные различия, Chrome запрашивает отменное одноразовое разрешение. Я не закончил читать статью, но, похоже, хранение разрешений не является чем-то вроде Chrome.
Ответы
Ответ 1
Как насчет использования localStorage, который должен поддерживаться всеми браузерами html5 (которые поддерживают геолокацию)
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(successFunction, errorFunction);
}
//Get latitude and longitude;
function successFunction(position) {
var lat = position.coords.latitude;
var long = position.coords.longitude;
localStorage['authorizedGeoLocation'] = 1;
}
function errorFunction(){
localStorage['authorizedGeoLocation'] = 0;
}
function checkauthorizedGeoLocation(){ // you can use this function to know if geoLocation was previously allowed
if(typeof localStorage['authorizedGeoLocation'] == "undefined" || localStorage['authorizedGeoLocation'] == "0" )
return false;
else
return true;
}
И затем вы проверяете использование следующей функции:
alert(checkauthorizedGeoLocation());
Это jsfiddle, если вам нужно проверить
Ответ 2
В соответствии с spec, нет - только три метода на navigator.geolocation
. Однако сохранение в cookie или локальном хранилище, вероятно, идеально подходит - разрешение также сохраняется в пользовательском агенте, поэтому оно должно работать правильно, когда пользователь перемещается между браузерами.
Ответ 3
См. этот ответ о том, как это сделать, используя API разрешений: Проверить, разрешена ли геолокация и получить Lat Lon
Работает без запроса пользователя, если ранее было предоставлено разрешение.