本文实现的基本原是,在windows mobile带手机功能的手机通过RIL调用就可以获取到基站的编号、区域号、国家代码等信息,通过这些信息访问google提供的一个网址就可以返回该基站的经纬度。(本文参考了很多网上的资料)
在网上查看资料说是可以获取多个基站,但我一直不能实现,还有我在一款CDMA的手机也实现不了。
定义NativeMethods类,写入要调用的方法。
定义接收基站信息结构和委托
好现在就可以来实现获取基站信息了
获取时会卡一小会,建议把这部分放入单独的线程中。
获取到基站后就使用google来查询出经纬度了。
访问google进行查询的类
里面我引用了,using Newtonsoft.Json.Linq;
这个程序集是用于json的解析,可以在网上下载得到,稍后也会在csdn的下载添加一个下载连接。
写好后使用它就非常简单了
string postData=rilCellTowerInfo.dwCellID.ToString() + "," +
rilCellTowerInfo.dwLocationAreaCode.ToString() + "," +
rilCellTowerInfo.dwMobileCountryCode.ToString() + "," +
"1";
LocationService service = new LocationService(postData);
string _location = service.GetLocationInfomation(postData);
这个_location就是转换出来的经纬度。
再次建议写在线程里。因为转换需要1-几秒钟的时间。
由于项目有其它功能,就不把源文件上传上来了。但其它有关的代码都已经在文章中了。
如何有人知道多基站定位的,也请您指导一下。谢谢!