Метод getCurrentPosition(location, error) — синтаксис № 2

Метод getCurrentPosition(location, error) — синтаксис № 2.

Что же происходит, когда пользователь не разрешает браузеру обращаться к географическим данным? Добавив второй атрибут (еще одну функцию), мы можем захватывать возникающие ошибки. Одной из них будет ошибка, связанная с невозможностью доступа.

Помимо объекта Position метод getCurrentPosition() в случае обнаружения ошибки возвращает объект PositionError. Этот объект передается второму атрибуту метода getCurrentPosition(), а для считывания значения и описания ошибки предлагает два атрибута, error и message. Трем возможным ошибкам соответствуют перечисленные далее константы:

- PERMISSION_DENIED, значение 1. Эта ошибка возвращается, когда пользователь запрещает API геолокации доступ к информации о своем географическом положении;

- POSITION_UNAVAILABLE, значение 2. Эта ошибка возвращается, когда местоположение устройства определить невозможно;

- TIMEOUT, значение 3. Эта ошибка возвращается, когда не удается определить местоположение в течение времени, объявленного в конфигурации.

Листинг 9.3. Вывод сообщений об ошибках

Function initiate(){

Var get=document. getElementById(‘getlocation’); get. addEventListener(‘click’, getlocation, false);

}

Function getlocation(){

Navigator. geolocation. getCurrentPosition(showinfo, showerror);

}

Function showinfo(position){

Var location=document. getElementById(‘location’); var data=»;

Data+^Широта: ‘+position. coords. latitude+’<br>’; data+=’Долгота: ‘+position. coords. longitude+’<br>’; data+=’T04H0CTb: ‘+position. coords. accuracy+’mts.<br>’; location. innerHTML=data;

}

Function showerror(error){

Alert(‘Ошибка: ‘+error. code+’ ‘+error. message);

}

Window. addEventListener(‘load’, initiate, false);

Сообщения об ошибках предназначены для внутреннего использования. Целью их добавления было создание механизма извещения приложения о текущей ситуации, для того чтобы оно могло продолжать работу соответствующим образом. В коде из листинга 9.3 мы добавили в метод getCurrentPosition() второй параметр (еще одну функцию обратного вызова) и создали функцию showerror(), которая выводит на экран информацию из атрибутов code и message. Значением атрибута code может быть только число от 0 до 3, соответствующее коду ошибки (перечислены ранее).

Для того чтобы сделать пример более наглядным, мы вывели информацию на экран с помощью метода alert(), однако в реальных приложениях ответы API геолокации следует обрабатывать по возможности незаметно для пользователя, не извещая его об ошибках.

Объект PositionError отправляется функции showerror(), его представляет переменная error. Мы могли бы также отдельно выполнять проверку каждой ошибки (например, error. PERMISSION_DENIED) и уведомлять пользователя только в случае возникновения какого-то конкретного состояния.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *