Геолокация в Windows 7 без GPS
Много ли вы видели ноутбуков, которые оснащены GPS датчиком? Примерные оценки можно посмотреть тут, 58 штук из 4380, то есть 1.3%. Прямо скажем — не много. Трудно назвать все причины, по которым производители не оснащают портативные компьютеры, в общем-то, недорогим чипом, но наша заметка как раз о том, как ваш ноутбук снабдить функциональностью геолокации, даже если GPS датчика у вас нет. А заодно вы узнаете, как очень просто получить ваши координаты программным способом.
Поговорим о погоде?
Пользуетесь ли вы гаджетом погоды в Windows 7? До недавнего времени я не пользовался, так как вбивать в ручную очередной город (а путешествую я очень много) мне было лень. Опция автоматического определения моих координат не работала.
Все дело в том, что гаджет этот пытается определить ваши координаты через Windows7 Sensor API. И требует наличия драйвера сенсора. Недавно, подготавливая презентацию к Платформе 2011 я наткнулся на сенсор Geosense, который очень неплохо определяет координаты. Для сервиса погоды они годятся на 100%.
На самом деле точность, высокая, работает он на базе Google Location Service (WiFi и IP базы) и я его успел протестировать как минимум в трех местах:
- ЦМТ на Краснопресненской с помощью WiFi который был в гостинице. Он определил местоположение с точностью до здания.
- Точно так же замечательно определил местоположение, когда в ЦМТ я был подключен по кабелю (IP)
- В Угличе определил местоположение через WiFi с точностью до дома
- Сейчас сижу в Шереметьево Д и опять таки определил местоположение с точностью до терминала.
Не забудьте только сконфигурировать этот сенсор как используемый по умолчанию, так как сенсор Orion в России, к сожалению, работает не достаточно точно.
Определяем координаты программно
Извините, сэр, где мы находимся?
-Вы находитесь в корзине воздушного шара, джентльмены.
Холмс, шепотом: -Ватсон, держу пари, что этот человек — программист.
Windows 7 Sensor API реализован в том числе и в .NET Framework 4.0. Вам достаточно написать буквально 3 строчки кода, чтобы понять, где вы находитесь:
Нахожусь я сейчас в Шереметьево Д, подключен к хотспоту «Terminal-D WiFi-Free» и вот что мне эта программа возвращает:
Немного про безопасность
Конечно, в Windows 7 есть возможность задать разрешения на использование этого API. Если ваше приложение пытается определить координаты, то обязательно появится предупреждение:
А так же можно настроить доступ пользователей:
Все обращения к API геолокации фиксируются в журнале:
Резюме
Конечно, такая геолокация совсем не заменяет GPS. В первую очередь из-за точности, да и ошибки иногда имеют место быть. Но может выручать в тех случаях, когда GPS не работает (в зданиях, в условиях плохого сигнала) и если у вас есть подключение Интернет. А уж для определения погоды или других контекстных сервисов (например, в социальных приложениях) годится наверняка.