Геолокация в Windows 7 без GPS


Предыдущая |

Много ли вы видели ноутбуков, которые оснащены GPS датчиком? Примерные оценки можно посмотреть тут, 58 штук из 4380, то есть 1.3%. Прямо скажем — не много. Трудно назвать все причины, по которым производители не оснащают портативные компьютеры, в общем-то, недорогим чипом, но наша заметка как раз о том, как ваш ноутбук снабдить функциональностью геолокации, даже если GPS датчика у вас нет. А заодно вы узнаете, как очень просто получить ваши координаты программным способом.
 

Поговорим о погоде?


Пользуетесь ли вы гаджетом погоды в Windows 7? До недавнего времени я не пользовался, так как вбивать в ручную очередной город (а путешествую я очень много) мне было лень. Опция автоматического определения моих координат не работала.
Настройки гаджета погоды Windows 7
Все дело в том, что гаджет этот пытается определить ваши координаты через Windows7 Sensor API. И требует наличия драйвера сенсора. Недавно, подготавливая презентацию к Платформе 2011 я наткнулся на сенсор Geosense, который очень неплохо определяет координаты. Для сервиса погоды они годятся на 100%.
Гаджет погоды Windows 7
На самом деле точность, высокая, работает он на базе Google Location Service (WiFi и IP базы) и я его успел протестировать как минимум в трех местах:


Не забудьте только сконфигурировать этот сенсор как используемый по умолчанию, так как сенсор Orion в России, к сожалению, работает не достаточно точно.Настройки сенсора геолокации
 

Определяем координаты программно


Извините, сэр, где мы находимся?
-Вы находитесь в корзине воздушного шара, джентльмены.
Холмс, шепотом: -Ватсон, держу пари, что этот человек — программист.




Windows 7 Sensor API реализован в том числе и в .NET Framework 4.0. Вам достаточно написать буквально 3 строчки кода, чтобы понять, где вы находитесь:

Код программы определения местоположения
Нахожусь я сейчас в Шереметьево Д, подключен к хотспоту «Terminal-D WiFi-Free» и вот что мне эта программа возвращает:
Результаты геолокации в BingMaps
 

Немного про безопасность


Конечно, в Windows 7 есть возможность задать разрешения на использование этого API. Если ваше приложение пытается определить координаты, то обязательно появится предупреждение:
Включение сенсора
А так же можно настроить доступ пользователей:
Конфигурация сенсоров для пользователей
Все обращения к API геолокации фиксируются в журнале:
image
 

Резюме


Конечно, такая геолокация совсем не заменяет GPS. В первую очередь из-за точности, да и ошибки иногда имеют место быть. Но может выручать в тех случаях, когда GPS не работает (в зданиях, в условиях плохого сигнала) и если у вас есть подключение Интернет. А уж для определения погоды или других контекстных сервисов (например, в социальных приложениях) годится наверняка.

Исходники простого консольного приложения использующего Geolocation API вы можете скачать из MSDN Code Gallery по адресу code.msdn.microsoft.com/Windows-7-Geolocation-API-25585fac