Get to know MDN better
This page was translated from English by the community. Learn more and join the MDN Web Docs community.
Secure context: This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.
Geolocation API позволяет пользователю предоставлять своё местоположение web-приложению, если пользователь согласится предоставить его. Из соображений конфиденциальности, у пользователя будет запрошено разрешение на предоставление информации о местоположении.
API геолокации доступен через объект navigator.geolocation.
Если объект существует, функции определения местоположения доступны. Вы можете проверить это следующим образом:
Чтобы получить текущее местоположение пользователя, вы должны вызвать метод getCurrentPosition(). Это инициирует асинхронный запрос для обнаружения местоположения пользователя, и запрашивает аппаратные средства позиционирования, чтобы получить последнюю актуальную информацию. Когда местоположение определено, выполняется callback. По желанию вы можете указать вторую callback функцию для обработки ошибки, которая запустится в случае ошибки. Третий, опциональный параметр - объект с опциями, где вы можете настроить максимальное значение возвращаемых данных, время ожидания ответа на запрос, и, при желании, точность возвращаемых данных.
Примечание: По умолчанию getCurrentPosition() пытается вернуть результат так быстро, как это возможно, за счёт чего даёт не очень точный результат. Это может быть полезно, если вам нужно быстро получить ответ, при этом не важна точность. Устройства с GPS, например, могут пытаться скорректировать данные GPS около минуты и даже больше, поэтому в самом начале могут вернуться менее точные данные (местоположение IP или wifi-сети), полученные getCurrentPosition().
Функция do_something(), в примере выше, будет вызвана лишь тогда, когда данные о местоположении будут получены.
Если данные о местоположении меняются (либо устройство находится в движении, либо пришли более точные данные о геопозиции), вы можете указать callback функцию, которая будет вызывается при любом обновлении данных о местоположении. Это делается с использованием функции watchPosition(), которая имеет несколько входных параметров: getCurrentPosition(). Эта функция вызывается много раз, позволяя браузеру обновлять данные о текущей локации либо во время движения, либо после получения более точной информации о местоположении (после применения более точных приёмов). Функция, которая вызывается при ошибке, для getCurrentPosition(), при желании, может быть вызвана неоднократно.
Примечание: Вы можете использовать watchPosition() без вызова getCurrentPosition().
Метод watchPosition() возвращает числовой ID, который может быть использован для идентификации наблюдателя за местоположением; используйте его вместе с методом clearWatch(), чтобы перестать получать новые данные о местоположении.
getCurrentPosition() и watchPosition() принимают колбэк-функцию при успехе, необязательную колбэк-функцию при ошибке и необязательный объект PositionOptions.
Этот объект позволяет вам включить возможность определения позиции с высокой точностью, указать максимальное время кеширования значения позиции (при повторных запросах, пока время не вышло, вам будет возвращается кешированное значение; после браузер будет запрашивать актуальные данные), а также указать значение, устанавливающее интервал — как часто браузер должен пытаться получить данные о местоположении, прежде чем выйдет время.
Вызов watchPosition может выглядит следующим образом:
Местоположение пользователя содержится в экземпляре объекта GeolocationPosition, содержащего внутри экземпляр другого объекта — GeolocationCoordinates.
Экземпляр GeolocationPosition содержит только две вещи, свойство coords, внутри которого GeolocationCoordinates и свойство timestamp, внутри которого экземпляр DOMTimeStamp, предоставляющее метку времени, созданную при получении данные.
Экземпляр GeolocationCoordinates содержит некоторое количество свойств, двое из которых вы будете чаще всего использовать: latitude и longitude, которые помогут вам отобразить полученную позицию на карте. Поэтому многие колбэк-функции с успешным получением позиции выглядят очень просто:
Однако, вы также можете получить и другую информацию из объекта GeolocationCoordinates, такую как высота над уровнем моря, скорость, направление устройства и точные данные о высоте, долготе и широте.
Callback-функция для ошибок, если она была передана в getCurrentPosition() или watchPosition(), ожидает экземпляр объекта GeolocationPositionError в качестве первого аргумента. Он будет содержать два свойства, code, который укажет на то, какая именно ошибка произошла и понятное для человека message, описывающее значение поля code.
Функция может выглядеть примерно так:
Следующий пример использует Geolocation API для того, чтобы получить широту и долготу пользователя. При успешном выполнении, ссылка будет вести на openstreetmap.org, который отобразит пользовательскую позицию на карте.
This page was last modified on 17 дек. 2024 г. by MDN contributors.
Your blueprint for a better internet.
Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998–2026 by individual mozilla.org contributors. Content available under a Creative Commons license.