В блоге:

2008-10-31

GoogleMaps Location API: общий принцип работы

Просто резюмирую доступную информацию относительно определения положения в мобильной версии GoogleMaps без GPS.

Определение заключается в получении координат по значениям MCC, MNC, LAC и CellID через сервер http://www.google.com/glm/mmap.

MCC - код страны (для России - 250).
MNC - код сети (МТС - 01, Мегафон - 02, Билайн - 99 и т.п.)
LAC - код локальной зоны (т.е. совокупности базовых станций, обслуживаемым одним контроллером)
CellID (CID) - идентификатор, состоит из номеров базовой станции и сектора.

База на сервере динамическая, реально строится и модифицируется по данным, которые предоставляют пользователи мобильной версии GoogleMaps с GPS.

Протокол взаимодействия с сервером Google не разглашает, но его вскрыли. Примеры работы с сервером через этот протокол:
На Python: http://forum.netmonitor.ru/about4470-0-asc-15.html#37336
На Python для S60: http://blog.jebu.net/2008/07/google-cell-tower-mapping-with-python-on-s60/
На C#: http://maps.alphadex.de/datafiles/fct0e1b11782832f02.cs
На Java для Android OS: http://davanum.wordpress.com/2007/12/01/android-much-better-geo-location-from-just-cellidlac/

Этого достаточно для написания собственного кода работы с сервером.

Да, стоит отметить, что ключевыми являются значения LAC и CellID. MCC/MNC важны только при наличии в базе на сервере нескольких значений пар LAC, CellID.

Для проверки я накидал программку, посмотрел на реальных значениях и сравнил с показаниями мобильной версии GoogleMaps. Все совпало.

Для получения реальных значений поставил на Nokia S60 FieldTest (хакерски довольно). Хотя можно и без этого. Если мобильная версия GoogleMaps умеет на телефоне определять положение без GPS, то можно пойти в "Справку", там вызвать "Общие сведения" и в самом конце информации будет строка вида myl:MCC:MNC:LAC:CellID


0 comments:

Post a Comment

Blog Archive