Google Mobile Maps手机定位原理之探讨

如果你在你的手机装过Google Mobile Maps,你可以发现只要你的手机能连GPRS,即使没有GPS功能,也能定位到你手机所在位置,只是精度不是很精确。在探讨这个原理之前,先让我们了解一下一些移动知识,了解什么是MNC/MCC/LAC/Cell ID。

  • Mobile Network Code (MNC)
  • 移动网号码,中国联通CDMA系统的MNC为03,中国移动的应该为00。

  • Mobile Country Code (MCC)
  • 移动用户所属国家代号,中国是:460。

  • Location Area Code (LAC)
  • 地区区域码,用来划分区域,一般小地方就一个LAC,大地方就有多几个。

  • Cell Tower ID (Cell ID)
  •  CellID代表一个移动基站,如果你有基站数据,查CellID你就可以知道这个基站在哪里,移动公司或者警察通过这个知道你是在哪个基站范围打的移动电话。

    这些信息有什么用呢? 通过这些信息可以知道你的手机是从哪个国家,区域和哪个基站接入移动网络的。所以有些防盗手机丢失后,会发一些类似"MCC:460;MNC:01;LAC:7198:CELLID:24989"内容的短信到你指定号码就是这个用途,通过这些信息可以从移动查到你的被盗手机在哪里出现过。不过知道了也没用,中国人口这么密集,就是在你身边你也不知道谁是小偷:)

    这些信息从哪里来呢,一般的手机系统都提供相应的API来获取这些信息(Tower Info),比如Window SmartPhone 或Mobile就是通过RIL.dll里的API来取得,每个手机操作系统不一样,相关的信息可以查相关资料。

    得到了这些信息,如果没有基站信息表,得到了这些信息也不知道在哪,因为只有移动运营商有相关的信息,除非你是运营商或者警察才能得到这些信息。是不是我们就查不到相应的数据呢,当然不是,强大的Google就有,这里就要提到Google Mobile Maps API,里面囊括了比较全的基站信息,中国的也有,就是偏远地区的有没有就不知道了。Google Mobile Maps本身就是使用的这些信息,感兴趣可以试一试,没有GPS模块也能定位到你手机位置,但精度不大,取决于基站的位置离你多远。

    同样我们自己也可以开发相应的手机应用来定位,只要调用Google现成的API(Secret API)"http://www.google.com/glm/mmap“.

  • 首先读取你自己手机的CellID和LAC。
  • 通过Http连接发送Post请求到http://www.google.com/glm/mmap
  • 传入CellID和LAC参数,从API返回基站的经纬度(Latitude/Longitude)。
  •  

    另外有个可以参考的例子http://www.codeproject.com/KB/mobile/DeepCast.aspx

    mnc,mcc都可在imsi中提取,java实现转经纬度:http://www.oschina.net/code/snippet_88638_5080

    你可能感兴趣的:(Google,lac,gprs,Cellid)