Чтобы использовать датчик геопозиционирования, создайте экземпляр объекта Geolocation и зарегистрируйте отправляемое им событие update. Событие update является объектом события Geolocation. Событие имеет восемь свойств:
altitude: высота в метрах.
heading: направление движения (относительно истинного сервера) в градусах.
horizontalAccuracy: точность по горизонтали в метрах.
latitude: широта в градусах.
longitude: долгота в градусах.
speed: скорость в метрах в секунду.
timestamp: число миллисекунд на момент события, начиная с инициализации среды выполнения.
verticalAccuracy: точность нивелирования в метрах.
Свойство timestamp является объектом int. Остальные свойства являются объектами Number.
Здесь приводится основной пример отображения данных геопозиционирования в текстовом поле:
var geo:Geolocation;
if (Geolocation.isSupported)
{
geo = new Geolocation();
geo.addEventListener(GeolocationEvent.UPDATE, updateHandler);
}
else
{
geoTextField.text = "Geolocation feature not supported";
}
function updateHandler(event:GeolocationEvent):void
{
geoTextField.text = "latitude: " + event.latitude.toString() + "\n"
+ "longitude: " + event.longitude.toString() + "\n"
+ "altitude: " + event.altitude.toString()
+ "speed: " + event.speed.toString()
+ "heading: " + event.heading.toString()
+ "horizontal accuracy: " + event.horizontalAccuracy.toString()
+ "vertical accuracy: " + event.verticalAccuracy.toString()
}
Чтобы воспользоваться этим примером, перед использованием кода создайте текстовое поле geoTextField и добавьте его в список отображения.
Можно настроить необходимый интервал времени для событий геопозиционирования, вызвав метод setRequestedUpdateInterval() объекта Geolocation. В этом методе используется один параметр interval, который представляет собой запрошенный интервал обновления в миллисекундах:
var geo:Geolocation = new Geolocation();
geo.setRequestedUpdateInterval(10000);
Фактическое время между обновлениями геопозиционирования может быть больше или меньше этого значения. Любое изменение в интервале обновления затрагивает все зарегистрированные прослушиватели. При отсутствии вызова метода setRequestedUpdateInterval() приложение получает обновления на основе интервала, заданного в устройстве по умолчанию.
Пользователь может запретить приложению получать доступ к данным геопозиционирования. Например, в устройстве iPhone выводится запрос, когда приложение пытается получить данные геопозиционирования. В ответ на запрос пользователь может запретить приложению доступ к данным геопозиционирования. Объект Geolocation отправляет событие status, когда пользователь запрещает доступ к данным геопозиционирования. Кроме того, для свойства muted объекта Geolocation устанавливается значение true, когда датчик геопозиционирования недоступен. Объект Geolocation отправляет событие status при изменении свойства muted. Следующий код показывает способ обнаружения отсутствия доступа к данным геопозиционирования:
var geo:Geolocation;
var latitude:Number;
var longitude:Number;
if (Geolocation.isSupported)
{
geo = new Geolocation();
if (!geo.muted)
{
geo.addEventListener(GeolocationEvent.UPDATE, updateHandler);
geo.addEventListener(StatusEvent.STATUS, geoStatusHandler);
}
}
else
{
trace("not supported");
}
function updateHandler(event:GeolocationEvent):void
{
latitude = event.latitude;
longitude = event.longitude;
}
function geoStatusHandler(event:StatusEvent):void
{
geo.removeEventListener(GeolocationEvent.UPDATE, updateHandler);
}
Примечание. Устройства iPhone первого поколения, которые не оснащены блоком GPS, отправляют события update только в редких случаях. В этих моделях объект Geolocation может отправлять только одно или два первоначальных события update. После этого сообщения update отправляются в случае значительного изменения данных.
Проверка наличия поддержки геопозиционирования
Используйте свойство Geolocation.isSupported, чтобы проверить наличие поддержки этой функции в среде выполнения:
if (Geolocation.isSupported)
{
// Set up geolocation event listeners and code.
}
В настоящее время геопозиционирование поддерживается только в приложениях на основе ActionScript для iPhone и в пакете Flash Lite 4. Если в среде выполнения свойство Geolocation.isSupported принимает значение true, то поддержка геопозиционирования существует.
В некоторых моделях iPhone блок GPS не предусмотрен. В этих моделях используются другие средства (например, триангуляция мобильного телефона) для получения данных о географическом расположении. В этих моделях и в любых моделях iPhone с отключенным блоком GPS объект Geolocation может отправлять только одно или два первоначальных события update.