Метод getCurrentPosition(location, error, configuration) — синтаксис № 3

Метод getCurrentPosition(location, error, configuration) — синтаксис № 3.

Третий возможный параметр метода getCurrentPosition() — это объект, включающий в себя до трех атрибутов:

— enableHighAccuracy. Это булев атрибут, извещающий систему о том, что вам требуется максимально точная информация о местоположении. Для того чтобы вернуть точные координаты устройства, браузер попытается получить географическую информацию через такие системы, как GPS. Однако эти системы расходуют большое количество ресурсов устройства, поэтому их использование необходимо ограничивать. По этой причине значение по умолчанию данного атрибута равно false;

— timeout. Задает максимальную продолжительность интервала времени, отведенного на выполнение операции. Если информацию не удается получить за указанное время, возвращается ошибка TIMEOUT. Значение следует указывать в миллисекундах;

— maximumAge. Координаты предыдущих местоположений кэшируются в системе. Если в нашем приложении допускается использование последнего сохраненного набора данных вместо извлечения новой информации о местоположении (во избежание излишней траты ресурсов или для обеспечения быстрой реакции), то с помощью этого атрибута можно задать лимит возраста информации. Если последнее кэшированное местоположение «старше» указанного возраста, то выполняется запрос нового местоположения. Значение задается в миллисекундах.

Код из листинга 9.4 пытается получить самую точную информацию о местоположении устройства за время, не превышающее 10 с, при условии, что в кэше нет географических данных, полученных менее 60 с назад (если есть, то именно они возвращаются в объекте Position).

Function initiate(){

Var get=document. getElementById(‘getlocation’); get. addEventListener(‘click’, getlocation, false);

}

Function getlocation(){ var geoconfig={

EnableHighAccuracy: true, timeout: 10000, maximumAge: 60000

};

Navigator. geolocation. getCurrentPosition(showinfo, showerror, geoconfig);

}

Function showinfo(position){

Var location=document. getElementById(‘location’); var data=»;

Data+=’Широта: ‘+position. coords. latitude+'<br>’; data+^Долгота: ‘+position. coords. longitude+'<br>’; data+=’T04H0CTb: ‘+position. coords. accuracy+’mts.<br>’; location. innerHTML=data;

}

Function showerror(error){

Alert(‘Ошибка: ‘+error. code+’ ‘+error. message);

}

Window. addEventListener(‘load’, initiate, false);

В JavaScript предусмотрено несколько способов создания объектов. Для того чтобы сделать пример понятнее, мы сначала создаем объект, сохраняем его в переменной geoconfig, а затем используем эту ссылку в методе getCurrentPosition(). Однако можно также напрямую добавить объект в метод в виде атрибута. В небольших приложениях вполне допустимо отка — зываться от использования объектов, однако в более сложных кодах это вряд ли возможно. Для того чтобы больше узнать об объектах, зайдите на наш веб-сайт и изучите ссылки для этой главы.

Сначала мы создали объект с конфигурационными значениями, а затем сослались на него из метода getCurrentPosition(). В остальном код не поменялся. Функция showinfo() выводит информацию на экран независимо от того, каким образом она была извлечена (из кэша или путем нового системного запроса).

В последнем примере кода мы начинаем раскрывать истинное предназначение API Geolocation (Геолокация). Самые эффективные и полезные возможности ориентированы на мобильные устройства. Например, когда значение атрибута enableHighAccuracy равно true, браузер обращается к таким системам, как GPS, чтобы получить самые точные географические данные. Методы watchPosition() и clearWatch(), с которыми мы познакомимся далее, работают с постоянно меняющимися географическими данными, а такая ситуация возможна, разумеется, только при обращении к приложению с мобильного (и перемещающегося в пространстве) устройства. Этот аспект вскрывает две важные проблемы. Во-первых, большинство наших примеров кода следует тестировать на мобильном устройстве, чтобы понимать, как они будут работать в реальных условиях. А во-вторых, к использованию данного API следует подходить очень ответственно. GPS и другие системы определения местоположения потребляют большое количество ресурсов, и, если не проявлять достаточную осмотрительность, аккумулятор устройства быстро разрядится. Что касается первой из них, есть альтернатива: зайдите на веб-сайт http://dev.w3.org/geo/api/test-suite/ и найдите комплект тестирования для API Geolocation (Геолокация). В отношении же второй можно дать небольшой совет: присваивайте атрибуту enableHighAccuracy значение true лишь в случае крайней необходимости и не используйте его только потому, что он доступен.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *