Геолокация на сайте HTML5 — Часть II - Творческая студия #Cruelten
Блог
Делимся с Вами своими знаниями и новостями
22.10.2014

Геолокация на сайте HTML5 — Часть II

В предыдущем уроке мы с Вами рассмотрели, как получать координаты местоположения человека, который зашел на Ваш сайт. В сегодняшнем уроке мы усовершенствуем нашу геолокацию и воспользуемся вторым аргументом метода getCurrentPosition, который будет выводить нам ошибку, если такие последуют.

На данный момент мы имеем вот это. Код данного примера берем из предыдущего урока.

В предыдущем уроке мы не делали обработчик ошибок, и это довольно большое упущение, сейчас мы должны это исправить. Итак.

Берем наш метод navigator.geolocation.getCurrentPosition(displayLocation); и добавляем второй аргумент displayError. Теперь наш метод выглядит так.

navigator.geolocation.getCurrentPosition(displayLocation, displayError);

Теперь нам нужно написать только код обработчика. Чтобы понимать его смысл мы должны знать, что API-интерфейс Geolocation передает нашему обработчику объект error, содержащий числовой код с описанием причины, по которой ему не получилось получить координаты. В зависимости от кода ошибки браузер может выдать ту или иную информацию. Ниже я предствил код обработчика.

function displayError (error) { //вот наш обработчик, API интерфейс передает сюда объект error.
	var errorTypes = {//объект error содержит числовые значения от 0 до 3. Вот собственно с нашим массивом мы и будем сравнивать его.
		0: "Неизвестная ошибка",
		1: "Доступ запрещен",
		2: "Координаты не определены",
		3: "Время запроса истекло"
	};
	var errorMessage = errorTypes[error.code];//свойство code объекта error даст нам числовое значение
	if (error.code == 0 || error.code == 2) {
		errorMessage = errorMessage + " " + error.message; //message свойство объекта error, которое содержит иногда текстовое сообщение
 	}
 	var div = document.getElementById('location');
 	div.innerHTML = errorMessage; //собственно уведомляем пользователя об ошибке.
 	//заметьте, мы не рассматриваем другие ошибки, так как это бессмысленно, ниже в статье дам комментарий.
}

Вот собственно и весь код. Вы спросите меня, а что же значат все эти ошибки? Давайте пройдемся по ним.

Коды ошибок

Ошибка под кодом ноль означает, что браузер не смог определить ошибку, иными словами, когда другие ошибки точно не являются ими — выводится данная ошибка. В данном случае очень важно обратиться к свойству error.message.

Ошибка с кодом единица. Здесь все просто, это значит, что пользователь не захотел и отключил возможнсть определения его местонахождения.

Ошибка со знаком цифры 2. Браузер попытался определить Ваше местонахождение, но не смог. Очень сильно соотносится с нулевой ошибкой, поэтому в моем коде я и указал их в своей функции.

Ну и ошибка под номер 3. Здесь выводится ошибка, которая возникает по истечении определенного времени. Так называемая ошибка времени запроса. Вот собственно и все. Теперь мы можем отлавливать ошибки.

В следующей статье мы научимся измерять расстояние между двумя точками в километрах. Следите за обновлениями.

Свяжитесь с нами уже сейчас

Вы привыкли видеть здесь форму обратной связи. Ведь так? Ее делают почти все. Но исследуя поведение людей, мы пришли к выводу, что форма совершенно не нужна. В любом случае все сводится к обсуждению Вашего проекта в WhatsApp или Telegram. А зачем нам тратить Ваше время на заполнение различных форм? Поэтому, пишите в Telegram или в WhatsApp.