中国计量学院本科毕业设计(论文)
图 5.10相关代码截图
(2)将得到的基站经纬度坐标转换为屏幕像素坐标。这里需要用到的百度地图API投影的接口,接口用于投影屏幕像素坐标和经度和纬度坐标之间的转换。通过MapView类的getProjection()方法实现经纬度坐标转换为屏幕像素坐标。这里自己写了一个函数exforxy(double lat,double lon),可以在后续进行调用。
图 5.11相关代码截图
(3)得到屏幕像素坐标后用极大似然估计定位法进行计算。具体计算方法详见3.1.1中的极大似然估计定位。
图 5.12相关代码截图
23
中国计量学院本科毕业设计(论文)
图 5.13相关代码截图
图 5.14相关代码截图
(4)将定位计算的结果转换为经纬度坐标。此处调用百度地图API中的Projection接口,Projection接口用于屏幕像素坐标和经纬度坐标之间的变换。通过MapView类的getProjection()方法实现屏幕像素坐标转换为经纬度坐标。这里自己写了一个函数exforlatlon(Point point),可以在后续进行调用。
图 5.15相关代码截图
5.6 定位辅助模块
由于在实际测试过程中由于存在一些意外的数据,导致最后定位结果偏差较大故加入本功能模块,以降低定位偏差。本模块主要分为两个部分,第一部分针
24
中国计量学院本科毕业设计(论文)
对室外情况,有时测得一两个很远基站,对定位结果影响很大,所以用加权平均定位法加以辅助。具体加权方法:从当前基站算起到邻区基站按接收到信号的顺序,从大到小逐级递减给予权重值。实施步骤如下:
图 5.16相关代码截图
第二部分针对室内情况,由于室内信号衰减程度很大,用经典的信号衰减模型计算手机和基站距离偏差较大,故加入Wi-Fi辅助定位,Wi-Fi信息由5.2中介绍的Wi-Fi信息采集模块获得。具体方法是将wifi定位结果和利用极大似然估计定位结果进行加权平均,权重值分布wifi定位结果占19/20,极大似然估计定位结果占1/20。实施步骤如下: Wi-Fi辅助定位具体步骤:
图 5.17相关代码截图
5.7 地图标注模块
本功能模块作用主要将当前基站和邻区基站和定位结果在百度地图上进行标注,地图标注效果图见图5.23。主要实施步骤如下:
(1)首先在AndroidManifest.xml中添加百度地图 屏幕及版本支持:
android:label=\ android:screenOrientation=\
android:configChanges=\
25
中国计量学院本科毕业设计(论文)
>
android:normalScreens=\android:resizeable=\ (2)初始化地图Activity、实例化MapView类和BMapManager类,加入百度地图自己申请的key,设置内置的缩放控件,并预先设置一个地图的中心点 图 5.18相关代码截图 (3)管理百度地图API,重写当暂停,重写启动,注销地图控件时的方法。 图 5.19相关代码截图 (4)为地图标注对象添加不同的图标 (5)准备要在百度地图上标注的overlay数据,构造OverlayItem的三个参数依次为:item的位置,标题文本,文字片段,将overlay数据添加ItemizedOverlay,得到需要标在地图上的资源。为maker定义位置和边界,添加ItemizedOverlay实例到mMapView。当点击标注是,弹出显示为“基站n”(n为不大于8的正整数)。 26 中国计量学院本科毕业设计(论文) 图 5.20相关代码截图 图 5.21相关代码截图 27