定位技术有
两种,一种是基于 GPS 的定位,一种是基于移动运营网的基站的定位。
基于移动运营网基站定位服务又叫做移动位置服务(LBS——Location Based
Service ),它是通过电信移动运营商的网络(如 GSM 网)获取移动终端用户的位置信息
(经纬度坐标),在电子地图平台的支持下,为用户提供相应服务的一种增值业务[1],
在手机上不需要增加任何功能,向运营商开通相关服务就可以实现。
本文所说的基站定位,是采用 google 的数据,在功能手机上实现的定位功能(另
一种方法是:内置基站位置信息,然后查询。这需要购买第三方的数据库,并且由于运营
商的网络优化,数据会变得不准确。当然,在智能手机的实现那就更简单了)。这方面的
文章网上也有不少,大多偏向于理论,将它转化成代码,还是有些内容需要自己恩考。
本文尽量将自己实现代码的过程及注意点写下来,目的是:看了本文,就知道该如何
写代码了(如果还看不懂,就先查看网上原理性的东东,呵呵)。
其基本原理是:1、调用手机协议栈函数,获取当前服务小区和邻近小区的 CellID,
mnc,mcc,lac,rssi 值,至少需要要 3 组。2、通过手机的 HTTP 协议,将上述小区信
息传到 Google Gelocation Server 获取相对应小区的经纬度。3、根据无线电传播路径损
耗理论公式,将 RSSI 值转化成相对应的距离。4、运用三角形质心算法,采用3 组小区的
坐标信息和距离,得出手机当前的位置信息。下面具体描述实现过程。
一、获取服务小区和邻近小区的相关信息。由于手机平台的不同,调用的协议栈函数不
同。但必须获得以下的数据:小区 ID 号:CellID,移动网络号码(用于识别移动客户所
属的移动网络):mnc;移动国家号码(用于唯一地标识移动客户属于的国家):