Прикладной интерфейс Geolocation обладает несколькими особенностями, которые не были продемонстрированы в примере 22.1:
• В дополнение к первому аргументу с функцией обратного вызова методы getCurrentPosition и watchPosition принимают вторую необязательную функцию, которая будет вызвана в случае неудачного выполнения запроса.
• Помимо функций обработчиков успешного и неудачного выполнения запроса эти
два метода принимают в третьем необязательном аргументе объект с параметрами. Свойства этого объекта определяют: желательна ли высокая точность определения местонахождения, насколько «устаревшей» может быть информация о местонахождении и предельное время ожидания определения местонахождения.
• Объект, который передается обработчику в случае успешного выполнения запроса, также включает время и может (на некоторых устройствах) содержать дополнительную информацию, такую как высота над уровнем моря, скорость и направление перемещения.
Эти дополнительные возможности демонстрируются в примере 22.2.
Пример 22.2. Демонстрация всех возможностей определения местонахождения
// Асинхронно определяет местонахождение и отображает его в указанном элементе,
function whereami(elt) {
// Этот объект передается методу getCurrentPosition в 3 аргументе
var options = {
// Чтобы получить координаты с высокой точностью (например, с устройства GPS),
// присвойте этому свойству значение true. Отметьте, однако, что это может
// увеличить расход энергии в аккумуляторах.
enableHighAccuracy: false, // Приблизительно: по умолчанию
// Определите свое значение, если допустимо брать координаты из кэша.
// По умолчанию имеет значение 0, что обеспечивает получение самой
// свежей информации.
maximumAge: 300000, // Пригодна информация, полученная в течение последних 5 минут
// Предельное время ожидания выполнения запроса.
// По умолчанию имеет значение Infinity, что соответствует бесконечному
// времени ожидания выполнения запроса вызовом метода getCurrentPosition
timeout: 15000 // Ждать не более 15 секунд
};
if (navigator.geolocation) // Запросить координаты, если возможно