(іhttp://www.iv3.org/TR/geolocation-API/) позволяет программам на языке JavaScript запрашивать у броузера географическое местонахождение пользователя. Такие приложения могут отображать карты, маршруты и другую информацию, связанную с текущим местонахождением пользователя. При этом, конечно, возникает важная проблема соблюдения тайны частной информации, поэтому броузеры, поддерживающие прикладной интерфейс
Geolocation
, всегда запрашивают у пользователя подтверждение, прежде чем передать JavaScript-программе информацию о физическом местонахождении пользователя.
Броузеры с поддержкой
интерфейса
Geolocation
определяют свойство
navigator.geolocation
. Это свойство ссылается на объект с тремя методами:
navigator.geolocation.getCurrentPosition
Запрашивает текущее географическое местонахождение пользователя.
navigator.geolocation.watchPosition
Не только запрашивает текущее местонахождение, но и продолжает следить за координатами, вызывая указанную функцию обратного вызова при изменении местонахождения пользователя.
navigator.geolocation.clearWatch
Останавливает слежение за местонахождением пользователя. В аргументе этому методу следует передавать число, возвращаемое соответствующим вызовом метода
watchPosition
.
В устройствах, включающих аппаратную поддержку GPS, имеется возможность определять местонахождение с высокой степенью точности с помощью устройства GPS. Однако чаще информация о местонахождении поступает из Всемирной паутины. Если броузер отправит ІР-адрес специализированной веб-службе, она в большинстве случаев сможет определить (на основе информации о поставщиках услуг Интернета), в каком городе находится пользователь (и рекламодатели часто пользуются этой возможностью, реализуя определение местонахождения на стороне сервера). Броузер часто в состоянии получить еще более точную информацию о местонахождении, запросив у операционной системы список ближайших беспроводных сетей и силы их сигналов. Затем эта информация отправляется веб-службе, которая позволяет вычислить местонахождение с большой точностью (обычно с точностью до микрорайона в городе).
Эти технологии определения географического местонахождения связаны либо с обменом данными по сети, либо с взаимодействием с несколькими спутниками, поэтому прикладной интерфейс объекта
Geolocation
является асинхронным: методы
getCurrentPosition
и
watchPosition
возвращают управление немедленно, но они принимают функцию, которая будет вызвана броузером, когда он определит местонахождение пользователя (или когда местонахождение изменится). В простейшем случае запрос местонахождения выглядит так:
alert("Ваши координаты: " + latitude + ", + longitude);
});
В дополнение к широте и долготе в ответ на каждый успешный запрос возвращается также значение (в метрах), указывающее точность определения местонахождения. Пример 22.1 демонстрирует получение информации о местонахождении: он вызывает метод
getCurrentPosition,
чтобы определить текущее местонахождение, и использует полученную информацию для отображения карты (полученной от службы Google Maps) текущего местонахождения в масштабе, примерно
соответствующем точности определения местонахождения.
Пример 22.1. Использование информации о местонахождении для отображения карты
// Возвращает вновь созданный элемент <img>, настроенный (в случае успешного
// определения местонахождения) на отображение карты для текущего местонахождения.
// Обратите внимание, что вызывающая программа сама должна вставить возвращаемый
// элемент в документ, чтобы отобразить его. Возбуждает исключение, если возможность
// определения местонахождения не поддерживается броузером,
function getmap {
// Проверить поддержку объекта geolocation
if (!navigator.geolocation)
throw "Определение местонахождения не поддерживается";
// Создать новый элемент <img>, отправить запрос определения местонахождения,
// чтобы в img отобразить карту местонахождения и вернуть изображение,