2013-08-20 2 views
3

Веб-сайт, на котором я работаю, использует HTML5 geolocation api. Он отлично работает, но мне нужно знать, была ли эта функция разрешена.
navigator.geolocation только указывает, доступна ли функция. То, что я хочу знать, - это то, что пользователь уже включил. В принципе, мне нужно знать, будет ли браузер запрашивать разрешение на использование этой функции. Является ли это возможным?Есть ли способ узнать, включена ли геолокация для текущего домена?

ответ

6

Если пользователь не позволяет вашему приложению использовать геолокации API методы getCurrentPosition и watchPosition будет возвращать объект PositionError с помощью обратного вызова ошибки:

void getCurrentPosition(successCallback, 
         errorCallback, 
         options); 

long watchPosition(successCallback, 
        errorCallback, 
        options); 

PositionError выглядит как:

PositionError { 
    code; 
    message; 
}; 

, где возможные значения кода:

PositionError.PERMISSION_DENIED = 1; 
PositionError.POSITION_UNAVAILABLE = 2; 
PositionError.TIMEOUT = 3; 

И более конкретно:

  • PERMISSION_DENIED (числовое значение 1) процесс приобретения Положение не удалось, так как документ не имеет разрешения на использование геолокации API.

Документация here.

3

Нет подтверждения на постоянное разрешение.
Единственное, что вы можете сделать imho - это попытаться «угадать», если пользователь санкционировал время оценки.
Например:

  • более 1,5 секунд, чтобы восстановить геолокации -> вероятно, пользователь должны интерфейса мышей и дать Идент

  • менее 500мс -> довольно уверенный пользователь уже дают Идента

+0

Зачем пытаться угадать, можем ли мы справиться с ошибками? – sigmus

Смежные вопросы