Geolocation API в JavaScript: определение местоположения

В этом руководстве вы узнаете, как использовать в JavaScript Geolocation API, чтобы разрешить веб-приложениям получать доступ к вашему местоположению после того, как вы согласитесь им поделиться.

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

Почему нужен?

API геолокации полезен для веб-приложений, которые должны работать на основе местоположения пользователя, таких как поисковые системы, веб-сайты электронной коммерции, карты и приложения погоды.

Например, веб-сайт электронной коммерции может попросить вас поделиться своим местоположением. Получив информацию, он может показать вам наличие продукта, а также цены и скидки в зависимости от вашего местоположения.

Точно так же поисковая система, такая как Google.com, может возвращать результаты локального поиска на основе вашего поискового запроса и местоположения.

Например, если вы находитесь в Сан-Франциско и ищете пиццу, Google покажет вам список пиццерий, которые находятся рядом с вашим текущим местоположением.

Объект геолокации

API геолокации доступен через объект navigator.geolocation.

Проверка, поддерживается ли

Чтобы проверить, поддерживает ли его браузер, вы можете проверить, существует ли свойство geolocation в объекте навигатора следующим образом:

if (!navigator.geolocation) {
    console.error(`Your browser doesn 't support Geolocation`);
 }'

Получение текущей позиции

Чтобы получить текущее местоположение пользователя, вы вызываете метод getCurrentPosition() объекта navigator.geolocation.

Метод getCurrentPosition() отправляет асинхронный запрос для определения местоположения пользователя и запрашивает оборудование для определения местоположения (например, GPS) для получения актуальных данных.

getCurrentPosition() может быть успешным или неудачным. Он принимает два необязательных обратных вызова, которые будут выполняться в каждом случае соответственно.

Если getCurrentPosition() успешно, вы получите позицию пользователя в виде объекта GeolocationCoordinates.

Объект GeolocationCoordinates имеет свойства latitude и longitude, которые представляют местоположение.

Пример

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

 
 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JavaScript Geolocation Demo</title>
    <link rel="stylesheet" href="css/style.css">
</head>
<body>
    <div class="container">
        <button id="show" class="btn">Show my location</button>
        <div id="message"></div>
    </div>
    <script src="js/app.js"></script>
</body>
</html>

Ниже показан файл app.js:

(() = > {
    const message = document.querySelector('#message');

    // check if the Geolocation API is supported
    if (!navigator.geolocation) {
        message.textContent = `Your browser doesn 't support Geolocation`;
 message.classList.add('error ');
 return;
 }

// handle click event
const btn = document.querySelector('#show ');
btn.addEventListener('click ',
function() {
    // get the current position
    navigator.geolocation.getCurrentPosition(onSuccess, onError);
});


 // handle success case
function onSuccess(position) {
    const {
        latitude,
        longitude
    } = position.coords;

    message.classList.add('success ');
    message.textContent = `Your location: ($ {
        latitude
    },
    $ {
        longitude
    })`;
}

 // handle error case
function onError() {
    message.classList.add('error ');
    message.textContent = `Failed to get your location ! `;
}
})();

Как это работает:

  • Сначала выберите элемент #message с помощью метода querySelector querySelector().
  • Затем покажите сообщение об ошибке, если браузер не поддерживает API геолокации.
  • Затем выберите кнопку и прикрепите обработчик события клика. Обработчик события клика вызывает метод getCurrentPosition() объекта navigator.geolocation, чтобы получить текущую позицию пользователя.

Функции обратного вызова onSuccess и onError предназначены для обработки случаев успеха и ошибок.

После этого определите onSuccess(), которая получает широту и долготу из position.coords и показывает их в элементе

с message id.

Наконец, определите onError(), которая выводит сообщение об ошибке в случае сбоя метода getCurrentPosition().

Обратите внимание, что весь код в app.js упакован в IIFE.

Тестирование приложения

Ниже показано, как запустить веб-приложение с помощью Google Chrome. Если вы используете другой браузер, например Firefox, Edge или Safari, вы также сможете выполнить следующие шаги.

Когда вы нажимаете кнопку « Показать мое местоположение », браузер попросит вас поделиться своим местоположением следующим образом:

Показать мое местоположение

Если вы нажмете кнопку « Разрешить », вы увидите свое местоположение, как показано на следующем рисунке:

Ваше местоположение

Обратите внимание, что ваше местоположение может быть другим.

Чтобы изменить настройку браузера, щелкните значок местоположения и кнопку « Управление »:

Изменение настроек

Он покажет такой экран:

Управление настройками

Если щелкнуть значок « Корзина », разрешенный сайт будет удален.

И если вы обновите приложение и нажмете кнопку « Показать мое местоположение », оно снова попросит вас поделиться своим местоположением.

На этот раз, если вы нажмете кнопку « Блокировать »:

Кнопка Блокировать

… приложение покажет сообщение об ошибке:

Сообщение об ошибке

Заключение

  • API геолокации позволяет веб-приложениям получать доступ к текущему положению пользователя.
  • Используйте метод navigator.geolocation.getCurrentPosition(), чтобы получить текущее местоположение пользователя.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript