Определение заключается в получении координат по значениям 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