НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
HTML5. Уроки для початківців. W3Schools українською

En Es De Fr

HTML5 Геолокація


API геолокації HTML використовується для місцезнаходження користувача.

Оскільки це може поставити під загрозу конфіденційність, позиція недоступна, якщо користувач її не схвалить.


Знайдіть позицію користувача

API геолокації HTML використовується для отримання географічного положення користувача.

Оскільки це може порушити конфіденційність, позиція недоступна доти, доки користувач не погодиться з цим.

Примітка: Геолокація є найбільш точною для пристроїв з GPS, таких як смартфон.


Підтримка браузерами

Цифри в таблиці визначають першу версію браузера, що повністю підтримує геолокацію.

API
Геолокація 5.0 - 49.0 (http)
50.0 (https)
9.0 3.5 5.0 16.0

Примітка: Починаючи з Chrome 50, API Геолокація працює лише при безпечному з’єднанні, такому як HTTPS. Якщо ваш сайт розміщений на незахищеному джерелі (наприклад, HTTP), запити на місцезнаходження користувачів більше не функціонуватимуть.


Використання HTML Геолокації

Метод getCurrentPosition() використовується для повернення позиції користувача.

Наведений нижче приклад повертає широту та довготу позиції користувача:

Приклад

<script>
var x = document.getElementById("demo");
function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(showPosition);
  } else {
    x.innerHTML = "Геолокація не підтримується цим браузером.";
  }
}

function showPosition(position) {
  x.innerHTML = "Широта: " + position.coords.latitude +
  "<br>Довгота: " + position.coords.longitude;
}
</script>
Спробуйте самі »

Пояснення прикладу:

  • Перевіряємо, чи геолокація підтримується;
  • Якщо підтримується, запускаємо метод getCurrentPosition(). Якщо ні, то відображаємо повідомлення користувачу;
  • Якщо метод getCurrentPosition() успішний, він повертає об’єкт координат до функції, зазначеної у параметрі (showPosition);
  • Функція showPosition() виводить широту та довготу.

Наведений вище приклад є дуже простим базовим скриптом геолокації без обробки помилок.


Обробка помилок та відмов

Інший параметр методу getCurrentPosition() використовується для обробки помилок. Він визначає функцію для запуску, якщо не вдалося отримати місцезнаходження користувача:

Приклад

function showError(error) {
  switch(error.code) {
    case error.PERMISSION_DENIED:
      x.innerHTML = "Користувач відхилив запит на геолокацію."
      break;
    case error.POSITION_UNAVAILABLE:
      x.innerHTML = "Інформація про місцезнаходження недоступна."
      break;
    case error.TIMEOUT:
      x.innerHTML = "Запит на отримання тайм-ауту користувача."
      break;
    case error.UNKNOWN_ERROR:
      x.innerHTML = "Сталася невідома помилка."
      break;
  }
}
Спробуйте самі »

Відображення результату на карті

Щоб відобразити результат на карті, потрібен доступ до сервісу карт, наприклад, до Google Maps.

У наведеному нижче прикладі повернута широта та довгота використовуються для відображення місцезнаходження на карті Google (за допомогою статичного зображення):

Приклад

function showPosition(position) {
  var latlon = position.coords.latitude + "," + position.coords.longitude;

  var img_url = "https://maps.googleapis.com/maps/api/staticmap?center=
  "+latlon+"&zoom=14&size=400x300&sensor=false&key=YOUR_KEY";

  document.getElementById("mapholder").innerHTML = "<img src='"+img_url+"'>";
}

Інформація щодо місцезнаходження

На цій сторінці показано, як відобразити позицію користувача на карті.

Геолокація також дуже корисна для конкретної інформації про місцезнаходження, наприклад:

  • Актуальна місцева інформація;
  • Відображення цікавих місць біля користувача;
  • Покрокова навігація (GPS).

Метод getCurrentPosition() - повернення даних

Метод getCurrentPosition() повертає об'єкт у разі успіху. Властивості широти, довготи та точності завжди повертаються. Інші властивості повертаються, якщо доступні:

Властивість Повертає
coords.latitude Широта як десяткове число (завжди повертається)
coords.longitude Довгота як десяткове число (завжди повертається)
coords.accuracy Точність позиції (завжди повертається)
coords.altitude Висота в метрах вище за середній рівень моря (повертається, якщо є)
coords.altitudeAccuracy Точність позиції висоти (повертається, якщо доступна)
coords.heading Напрямок у градусах за годинниковою стрілкою від Півночі (повертається, якщо доступний)
coords.speed Швидкість за метри за секунду (повертається, якщо доступно)
timestamp Дата/час відповіді (повертається, якщо доступно)

Об’єкт геолокації - інші цікаві методи

Об’єкт геолокації - також інші цікаві методи:

  • watchPosition() - повертає поточну позицію користувача та продовжує повертати оновлену позицію, коли користувач переміщується (наприклад, GPS в автомобілі).
  • clearWatch() - зупиняє метод watchPosition().

Наведений нижче приклад показує метод watchPosition(). Для тестування потрібен точний пристрій GPS (наприклад, смартфон):

Приклад

<script>
var x = document.getElementById("demo");
function getLocation() {
  if (navigator.geolocation) {
    navigator.geolocation.watchPosition(showPosition);
  } else {
    x.innerHTML = "Геолокація не підтримується цим браузером.";
  }
}
function showPosition(position) {
  x.innerHTML = "Широта: " + position.coords.latitude +
  "<br>Довгота: " + position.coords.longitude;
}
</script>
Спробуйте самі »


Коментарі