Обработка ошибок
Дата публикации: 25.03.2011
Геолокация — это сложно. Так много всего может пойти не так. Я уже упоминал об одной проблеме — подтверждение пользователем. Если твоему приложению нужны координаты юзера ,а он не хочет их сообщать — ты в пролете. Тут пользователь всегда побеждает. Но как это предусмотреть в коде? Похоже, потребуется второй аргумент для функции getCurrentPosition() для вызова обработчика ошибок:
navigator.geolocation.getCurrentPosition(show_map, handle_error)
Если что-то пойдет не так, будет вызвана функция обработки ошибок с объектом PositionError, у которого имеются следующие свойства:
Свойство | Тип | Примечания |
---|---|---|
code | short | пронумерованные значения |
message | DOMString | не предназначен для конечных пользователей |
Свойство code принимает одно из следующих значений:
- PERMISSION_DENIED (1) — когда пользователь не разрешает определение месторасположения;
- POSITION_UNAVAILABLE (2) — если перебои с сетью или нет связи со спутником;
- TIMEOUT (3) — если сеть работает плохо и на вычисление координат пользователя уходит слишком много времени. Что значит «слишком много»? Об этом расскажу позже;
- UNKNOWN_ERROR (0) — какая-либо другая ошибка.
Пример :
function handle_error(err) { if (err.code == 1) { // Пользователь не разрешил определение координат! } }
В: Будет ли работать Geolocation API на Международной космической станции, на Луне или других планетах?
О: Спецификации по Geoloction API говорят: «для определения месторасположения используется интерфейс World Geodetic System (2d) [WGS84]. Другие системы не поддерживаются». В принципе, находясь на космической орбитальной станции космонавты могут определить свои координаты. Но нужно понимать, что World Geodetic System — это система ориентированная на планету Земля. Потому корректно работать за ее пределами Geolocation API не будет.
Куда дальше
- следующая — Выбор! Я хочу выбирать!
- предыдущая — Покажи мне код
- содержание