Safari

Получение географического местоположения

Используйте JavaScript классы, описанные в этом разделе, чтобы получить или отслеживать текущее географическое положение принимающего устройства. Эти классы скрывают детали реализации того, как информация о местоположении получается-например, с помощью системы глобального позиционирования (GPS), IP-адреса, Wi-Fi, Bluetooth, или какой-либо другой технологии. Классы позволяют получить текущее местоположение или получать постоянно обновленное расположение по мере его изменения.

iOS Примечание: Классы географического расположения доступны в iOS 3.0 и выше.
 

Классы географического расположения

Объект Navigator имеет переменную экземпляра Geolocation с доступом только для чтения. Вы получаете информацию о местоположении из этого Geolocation объекта. Параметры методов Geolocation, которые получают информацию о местоположении в основном представлены обратными вызовами, экземплярами PositionCallback или PositionErrorCallback. Поскольку могут быть задержки в получении информации о местоположении, оно не может быть возвращено немедленно этими методами. Обратный вызов, который вы укажете вызывается, когда информация о местоположении получена или происходит ошибка. Если информация о местоположении получена, обратному вызову положения передается положение объекта описывающее географическое местоположение. Если происходит ошибка, обратному вызову ошибки передается экземпляр PositionError с описанием ошибки. Объекта позиции представляет местоположение по широте и долготе.

Получение текущего местоположения

Наиболее распространенное использование класса Geolocation, для получения текущего местоположения. Например, веб-приложение может получить текущее местоположение и отображать его на карте для пользователя. Используйте getCurrentPosition метод Geolocation, чтобы получить текущее местоположение из объекта Navigator. Передайте функцию обратного вызова в качестве параметра методу getCurrentPosition следующим образом:

    // Получить текущее местоположение
    navigator.geolocation.getCurrentPosition(showMap);

Ваша функция обратного вызова-showMap в данном примере-должна открыть позицию объекта, переданную в качестве параметра, следующим образом:

function showMap(position) {
    latitude = position.coords.latitude;  // широта
    longitude = position.coords.longitude; // долгота
      // Показать карту отцентрованую по position
}
 

Отслеживание текущего местоположения

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

Используйте watchPosition, метод класса Geolocation, чтобы зарегистрироваться для изменения местоположения. Передайте вашу функцию обратного вызова в качестве параметра. В этом примере функция scrollMap вызывается каждый раз при изменении текущего местоположения:

    // Register for location changes
    var watchId = navigator.geolocation.watchPosition(scrollMap);

Функция обратного вызова должна открыть позицию объекта в качестве параметра следующим образом:

function scrollMap(position) {
    latitude = position.coords.latitude;  // широта
    longitude = position.coords.longitude; // долгота

      // прокрутка карты в центр position
}

Используйте clearWatch метод класса Geolocation, для отмены регистрации для изменения местоположения. Например, когда пользователь нажимает кнопку "отмена", или касается пальцем карты следующим образом:

function buttonClickHandler() {
      // Unregister when the user clicks a button
      navigator.geolocation.clearWatch(watchId);
}
Примечание: Постоянное отслеживание текущего местоположения может уменьшить срок службы батареи устройства с аппаратным включенным GPS в режим слежения.
 

Обработка ошибки местоположения

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

При регистрации для изменений местоположения, вы можете передать обратный вызов для ошибок в метод watchPosition, класса Geolocation, следующим образом:

// Register for location changes
var watchId = navigator.geolocation.watchPosition(scrollMap, handleError);

Обратный вызов ошибки должен принять PositionError объект в качестве параметра, как в:

function handleError(error) {
      // Update a div element with the error message
}
 
 
homeЗаметили ошибкукарта сайта 
   Made on a Mac