0Pricing
React Academy · Урок

Geolocation API в компонентах React

Запрашивайте и отслеживайте местоположение пользователя с помощью Geolocation API, обрабатывайте разрешения и удаляйте наблюдателей

«Geolocation API в компонентах React» — бесплатный урок React Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения React Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс React Academy содержит 4 уроков всего.

Однократное получение местоположения

navigator.geolocation.getCurrentPosition(successCallback, errorCallback, options) запрашивает местоположение устройства один раз. Функция обратного вызова при успешном выполнении получает объект GeolocationPosition. Это подходит, когда местоположение нужно получить однократно, например для поиска ближайшего магазина после нажатия кнопки, а не для постоянного отслеживания перемещения.

Непрерывное отслеживание местоположения

navigator.geolocation.watchPosition(successCallback, errorCallback, options) непрерывно вызывает функцию обратного вызова при каждом изменении местоположения устройства. Она возвращает числовой идентификатор watchId. Это подходит для сценариев реального времени, например для отслеживания доставки или пошаговой навигации, где местоположение должно оставаться актуальным.

Объект местоположения

Объект GeolocationPosition содержит свойство coords со значениями latitude, longitude и accuracy (в метрах). Дополнительные необязательные поля включают altitude, altitudeAccuracy, heading и speed. Поле timestamp содержит время получения местоположения.

Коды ошибок геолокации

Функция обратного вызова при ошибке получает объект GeolocationPositionError с числовым свойством code. Код 1 — это PERMISSION_DENIED (пользователь отказал), код 2 — POSITION_UNAVAILABLE (сбой оборудования или сети), а код 3 — TIMEOUT (выполнение запроса заняло слишком много времени). Всегда обрабатывайте все три случая.

Остановка отслеживания при очистке

Слушатель watchPosition работает бесконечно, пока Вы его не остановите. В useEffect верните функцию очистки, которая вызывает navigator.geolocation.clearWatch(watchId). Если забыть об очистке, отслеживание продолжится после размонтирования компонента, разряжая батарею и потенциально обновляя состояние размонтированного компонента.

Создание хука useGeolocation

Хук useGeolocation управляет состоянием статуса с четырьмя возможными значениями: idle (запрос ещё не отправлялся), loading (запрос выполняется), success (местоположение получено) и error (произошла ошибка). Он также хранит в состоянии position и errorMessage. Компоненты получают понятный и единообразный интерфейс.

Корректная обработка отказа в разрешении

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

Требование HTTPS для геолокации

Как и большинство мощных API браузера, геолокация доступна только в защищённых контекстах. На обычных страницах HTTP значение navigator.geolocation равно undefined. При разработке на localhost она работает без HTTPS. В рабочей среде всегда обеспечивайте работу приложения по HTTPS, иначе пользователи никогда не увидят запрос разрешения.

Параметры точности и времени

Необязательный третий аргумент getCurrentPosition и watchPosition принимает объект параметров. enableHighAccuracy: true запрашивает точность уровня GPS, но увеличивает расход энергии. timeout задаёт максимальное количество миллисекунд ожидания. maximumAge разрешает использовать кэшированное местоположение, если оно было получено в течение указанного количества миллисекунд.

Практические сценарии использования

Геолокация позволяет реализовать такие функции, как «найти магазин рядом со мной», отслеживание курьера на карте, показ погоды для текущего города, публикации с геометками и расчёт расстояния между пользователем и пунктом назначения. Перед запросом разрешения всегда понятно объясняйте пользователям, зачем приложению нужно их местоположение.

Тестирование геолокации при разработке

Chrome DevTools позволяет задать фиктивное местоположение устройства. Откройте DevTools, перейдите в меню с тремя точками, выберите «Дополнительные инструменты», а затем «Датчики». Вы можете ввести координаты широты и долготы, чтобы смоделировать любое местоположение. Это гораздо быстрее, чем физически перемещаться в разные места для тестирования функций, зависящих от местоположения.

Коды ошибок геолокации

Что означает значение 1 свойства code объекта GeolocationPositionError?

Итоги урока: API геолокации в React

Используйте getCurrentPosition для однократного получения местоположения, а watchPosition — для непрерывного отслеживания. Всегда вызывайте clearWatch в функции очистки useEffect. Создайте хук useGeolocation с состояниями idle, loading, success и error. Корректно обрабатывайте отказ в разрешении и помните, что в рабочей среде для геолокации требуется HTTPS.

Часто задаваемые вопросы

Урок «Geolocation API в компонентах React» бесплатный?

Да — полный текст урока «Geolocation API в компонентах React» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс React Academy, подпишись на CoddyKit PRO. Курс React Academy содержит 4 уроков всего.

Чему я научусь в уроке «Geolocation API в компонентах React»?

Запрашивайте и отслеживайте местоположение пользователя с помощью Geolocation API, обрабатывайте разрешения и удаляйте наблюдателей Ты практикуешь React Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать React Academy?

Предыдущий опыт не требуется. React Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Geolocation API в компонентах React»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке React Academy?

Да. Каждый урок React Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Clipboard API: копирование и вставка в React
  2. Geolocation API в компонентах React
  3. Notifications API и обработка разрешений
  4. IntersectionObserver для эффектов при прокрутке
← Назад к React Academy