Получение географических местоположений
Используйте классы JavaScript, описанные в этой главе, чтобы получить или отследить текущее географическое местоположение устройства хоста. Эти классы скрывают подробные данные реализации того, как информация о расположении получена — например, с помощью Системы глобального позиционирования (GPS), IP-адресов, Wi-Fi, Bluetooth или некоторой другой технологии. Классы позволяют Вам получать текущее расположение или получать непрерывные обновления на расположении, когда это изменяется.
Классы географического местоположения
Navigator
объект имеет только для чтения Geolocation
переменная экземпляра. Вы получаете информацию о расположении из этого Geolocation
объект. Параметры к Geolocation
методы, получающие информацию расположения, являются главным образом обратными вызовами, экземплярами PositionCallback
или PositionErrorCallback
. Поскольку может быть задержка получения информации расположения, это не может быть сразу возвращено этими методами. Обратные вызовы, которые Вы указываете, вызываются, когда информация о расположении получена, или ошибка происходит. Если информация о расположении получена, обратный вызов позиции передается объект позиции описание географического местоположения. Если ошибка происходит, ошибочный обратный вызов передается экземпляр PositionError
описание ошибки. Объект позиции представляет расположение в координатах долготы и широте.
Получение текущего расположения
Наиболее популярный способ использования Geolocation
класс должен получить текущее расположение. Например, Ваше веб-приложение может получить текущее расположение и вывести на экран его на карте для пользователя. Используйте getCurrentPosition
метод в Geolocation
получить текущее расположение от Navigator
объект. Передайте свою функцию обратного вызова как параметр к getCurrentPosition
метод следующим образом:
// Get the current location |
navigator.geolocation.getCurrentPosition(showMap); |
Ваша функция обратного вызова — showMap
функция в этом примере — должна открыть позицию объект как параметр следующим образом:
function showMap(position) { |
// Show a map centered at position |
} |
Используйте coords
переменная экземпляра переданного - в позиции возражает для получения широты и координат долготы следующим образом:
latitude = position.coords.latitude; |
longitude = position.coords.longitude; |
Отслеживание текущего расположения
Можно также отследить текущее расположение. Например, если Ваше веб-приложение выводит на экран текущее расположение на карте, можно зарегистрироваться для изменений расположения и постоянно прокручивать карту, когда изменяется текущее расположение. Когда Вы регистрируетесь для изменений расположения, Вы получаете обратный вызов каждый раз изменения расположения. Обратные вызовы непрерывны, пока Вы не не регистрируетесь для изменений расположения.
Используйте watchPosition
метод в Geolocation
класс для регистрации для изменений расположения. Передайте свою функцию обратного вызова как параметр. В этом примере, scrollMap
функция вызывается каждый раз текущие изменения расположения:
// Register for location changes |
var watchId = navigator.geolocation.watchPosition(scrollMap); |
Функция обратного вызова должна открыть позицию объект как параметр следующим образом:
function scrollMap(position) { |
// Scroll the map to center position |
} |
Подобный Получению Текущего Расположения, используйте coords
переменная экземпляра переданного в позиции возражает для получения координат долготы и широты.
Используйте clearWatch
метод в Geolocation
класс, чтобы не зарегистрироваться для изменений расположения. Например, не зарегистрируйтесь, когда пользователь нажмет кнопку или коснется пальца на карте следующим образом:
function buttonClickHandler() { |
// Unregister when the user clicks a button |
navigator.geolocation.clearWatch(watchId); |
} |
Обработка ошибок расположения
Ваше веб-приложение должно обработать ошибки, которые могут произойти при запросе информации расположения. Например, выведите на экран сообщение пользователю, если расположение не может быть определено вследствие плохого сетевого соединения или некоторой другой ошибки.
При регистрации для изменений расположения можно дополнительно передать ошибочный обратный вызов watchPosition
метод в Geolocation
класс следующим образом:
// Register for location changes |
var watchId = navigator.geolocation.watchPosition(scrollMap, handleError); |
Ошибочный обратный вызов должен взять a PositionError
возразите как параметр как в:
function handleError(error) { |
// Update a div element with the error message |
} |