Что такое enableHighAccuracy в getCurrentPosition

В методе getCurrentPosition (и watchPosition) есть третий параметр — positionOptions. С помощью данного параметра мы можем контролировать, как АРI-иптерфейс Geolocation вычисляет соответствующие показатели. Давайте взглянем па три параметра вместе с их значениями по умолчанию.


 
var positionOptions = {enableHighAccuracy: false,
                           timeout: Infinity,
                           maximumAge: 0
}
 

 

Все данные о местоположении, возвращаемые нам API-интерфейсом Geolocation, включают свойство accuracy. Однако мы также можем сказать API-интерфейсу Geolocation, что хотим получать только наиболее точные результаты, которые он способен выдать. Но это будет лишь намек браузеру, а различные реализации в действительности могут по-разному относиться к такому намёку. Несмотря па то что данный вариант может показаться маловажным, он песет в себе массу подтекста. Например, если вас не интересует суперточность результатов определения местоположения — вам может быть вполне достаточно спать, что ваш пользователь заходится в Балтиморе, — то API-интерфейс Geolocation сможет очень быстро и дешево (в плане энергопотребления) сообщить вам эти сведения. С другой стороны, если вы захотите узнать улицу, па которой находится ваш пользователь, то пет проблем, однако в таком случае API-интерфейсу Geolocation придется задействовать GPS и использовать массу электроэнергии для извлечения данной информации. Посредством параметра enableHighAccuracy вы говорите API-интерфейсу Geolocation, что вам необходимы наиболее точные результаты определения местоположения, какие он только способен дать, пусть даже и высокой ценой. Имейте в виду: использование данного параметра не гарантирует того, что браузеру обязательно удастся выдать вам более точное местоположение.

 

Параметры timeout и maximumAge...

 

Еще раз взглянем на то, что представляют собой параметры timeout и maximumAge.

timeout: сообщает браузеру, как долго он сможет определять местоположение пользователя. Следует отметить, что если пользователю будет предложено одобрить запрос на определение местоположения, то отсчет времени ожидания не начнется до тех пор, пока он не даст своего согласия. Если браузеру не удастся определить новое местоположение в течение времени в миллисекундах, указанного в значении timeout, произойдет вызов обработчика ошибок. Параметр timeout по умолчанию имеет значение Infinity.


maximumAge: сообщает браузеру, насколько устаревшими могут быть данные о местоположении. Таким образом, если у браузера имеются данные о местоположении, которое было определено 60 секунд назад, а для maximumAge при этом задано значение 90000 (90 секунд), то вызов getCurrentPosition приведет к возврату уже имеющихся кэшированных данных о местоположении (то есть браузер не станет пытаться определить повое местоположение пользователя). Однако если в данной ситуации для maximum Age будет задано значение, равное 30 секундам, браузеру придется определять повое местоположение пользователя.


Вы правы в своих суждениях насчет maximumAge. Что касается timeout, следует рассуждать так: при использовании maximumAge вы получаете старые (кэшированные) данные, пока они остаются «моложе» значения, заданного для maximumAge, и это действительно помогает оптимизировать производительность вашего приложения. Но что будет, когда «возраст» данных о местоположении превысит значение, заданное для maximumAge? В таком случае браузер попытается извлечь данные о новом местоположении. Быть может, все это не будет слишком вас беспокоить, например, вас устроят данные о новом местоположении, если они есть у браузера, а если же их у него нет, то эти сведения не потребуются сию же минуту. Вы могли бы задать для timeout значение 0, и если у браузера будут данные о местоположении, которые проходят «тест» maximumAge, то все отлично, в противном случае соответствующий вызов незамедлительно потерпит неудачу и произойдет вызов обработчика ошибок (с кодом ошибки TIMEOUT). Это лишь пример творческого подхода к использованию maximumAge и timeout для настройки поведения вашего приложения.

 

Пример вызова:


navigator.geolocation.getCurrentPosition (
                                                displayLocation,
                                                displayError,
                                                {enableHighAccuracy:true, maximumAge: 60000});

 


Примеры параметров касающиеся API-интерфейса Geolocation

 

{maximumAge:600000} - Я буду использовать кэшированные данные  о местоположении, если таковые будут иметься у браузера, и при этом им будет меньше 10 минут; в противном случае я хочу получить данные о новом местоположении


{timeout:1000, maximumAge:600000} - Мне требуются только кэшированные данные о местоположении, которым меньше 10 минут. При отсутствии таких данных я хочу получить данные о новом  местоположении, по только в том случае, если па это уйдет 1 секунда или меньше


{timeout:0, maximumAge:Infinity} - Мне требуются только кэшированные данные о местоположении. Меня устроят данные любого «возраста». Если кэшированные  данные о местоположении будут полностью отсутствовать, произойдет вызов обработчика ошибок. Сведения о новом местоположении извлекаться не будут! Данные застройки предназначены для использования в ситуациях, когда речь идет об автономной работе.


{timeout:Infinity, maximumAge:0} - Мне требуются только данные о новом местоположении. Браузер может использовать столько времени на определение местоположения, сколько ему потребуется.



Оставить свой ответ:

Имя:*
E-Mail:
Вопрос:
Skolko buдет пять пдюс сeмь?
Ответ:*
QQpedia21.ru - cамые интересные вопросы