Share via


Геолокация в 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 базы) и я его успел протестировать как минимум в трех местах:

  • ЦМТ на Краснопресненской с помощью WiFi который был в гостинице. Он определил местоположение с точностью до здания.
  • Точно так же замечательно определил местоположение, когда в ЦМТ я был подключен по кабелю (IP)
  • В Угличе определил местоположение через WiFi с точностью до дома
  • Сейчас сижу в Шереметьево Д и опять таки определил местоположение с точностью до терминала.

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

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

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

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

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

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

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

Резюме

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