基于移动终端的导航系统研究及应用
李 刚
(成都依能科技股份有限公司,四川 成都 610000)
摘要:现有各类地图应用的实时路况功能都具有一定延时,导航的路线规划无法避开拥堵路段,进行重新规划。
  本系统基于Android系统开发,利用百度地图及导航SDK、LBS云接口以及Android SDK在Eclipse(开发平台)中编写实现,并采用JSON数据格式与LBS云服务器进行数据交换。最终实现地图的基本应用、路径规划及实时路况查询等功能。
关键词:LBS;道路拥堵;导航;百度SDK;JSON
第1章  前 言
1.1 立项背景。近年来,机动车及驾驶人数迅速增长,给人们生产生活带来便捷的同时,也带来了出行道路拥堵的状况。该课题主要研究道路交通拥堵算法优化与设计,以及路线调整优化方案设计与实现。在Android平台上具体实施,利用百度LBS云 开放平台编写一个能够搭载到终端移动的应用,形成一个实时分析路径前方的路况,并在必要时及时修改原定路径的系统。
第2章  系统设计
系统按照功能间的相互联系划分为三个独立的模块。各个模块间不需要变量的相互传递,从而减少模块间的相互依赖,一方面简化了系统的调试,另一方面提升了系统的稳定性。
2.1 概要设计。本系统按功能划分为三个模块:地图基本应用、路线规划及导航、路况查询。三个模块分别为三个Activity(应用程序组件,提供界面),每个Activity功能相互独立,没有相互之间传递数据,三个模块可以单独开发。
2.2 详细设计
2.2.1地图基本应用
2.2.1.1地图显示及基本操作。启动主界面时,使用百度地图SDK初始化地图,自动加载2D地图。并实现地图放大缩小,旋转,漫游功能。
2.2.1.2poi检索。使用一个EditText控件供用户在其中输入搜索的关键词,添加一个ImageButton控件,点击该按钮开始在本地搜索。
2.2.1.3定位。使用一个ImageButton控件来启动定位监听,在地图上用不同于兴趣
点的图标标注出终端所在的位置。把当前位置移至地图正中间,方便查看,并显示当前位置的信息(包括地名及经纬度)。
2.2.1.4地理反编码。当想要查看地图上某点信息时,点击该点从而获取到该点的坐标,在地图上该点的上方显示弹出按钮,单击按钮,弹出提示窗体显示该点的详细信息,关闭弹出窗体时地图弹出按钮隐藏。点击屏幕上下一点时又弹出按钮,可以反复查看地图上任意点的信息。
2.2.2路线规划及导航。关闭主窗体的Activity。初始化用于路线规划和导航的Activity,并定位获取当前位置。由于在本Activity中需要单次和连续多次定位,所以需要一个boolean型变量来判断是否是单次定位。
2.2.2.1路线规划。获得起点、终点坐标后就可以发起路线的规划。路线规划分为两种情况:1、只有起点坐标和终点坐标 2、除上诉坐标外还包含途径点。因此需要一个boolean变量来标识是否是在规划新的路线,规划新路线时包含途经点。
2.2.2.2导航。导航的初始化需要在程序的启动界面里完成,在路线规划及导航界面设置导航所需的参数并启动导航,百度导航SDK封装了导航功能,包含TTS语音导航功能,使用该功能的接口,容易实现真实导航与虚拟导航(模拟终端在前行的过程)。
2.2.2.3规划新路径。规划新路径需要当前坐标、终点坐标、
途经点坐标。当前坐标由定位功能确定,终点坐标在终点搜索功
能中实现,途经点坐标由当前坐标附近搜索得到。需要在云端建
立路口的数据表,因为是保存的点数据,所以不用增加新的字段。
汽车gps导航2.2.3静态路况。静态路况是针对不需要规划路径,只想查
看某些路段的拥堵情况而从路线规划及导航模块剥离出路况判断
功能单独形成的一个模块。在一个新的Activity中实现,需要历
史记录来方便快速查询。
第3章  编码
为方便代码的管理,界面的设计使用DroidDraw(一
款android应用界面编辑软件)。为增加页面效果,按钮使用
imagebutton控件,使用xml文件设定控件样式。java类代码按作
用分别放在用于提供界面的包以及实现功能函数的包。
代码结构
类结构:(1)界面Activity类;(2)LBS云存储接口操作类;(3)速度-位置列表类;(4)距离、速度等辅助计算类;(5)各
中提示类。
第4章  测试
4.1 单元测试。标注各个模块代码的编写范围,使用菜单按
钮进行调试,检测各个中间函数的结果输出,及变量的值。假设
部分参数完成小模块单元的测试。
4.2 集成测试。按照界面的不同,将不同的模块进行整合,
测试该界面原设计的全部功能。监测函数间的相互调用是否在时
间、参数类型及返回结果为空等方面存在设计不当,并及时修正。
4.3 系统测试。导航功能及规划新路径功能需要实地测试。
由于数据来源的限制,LBS云端需要事先上传部分的道路拥堵信
息,以及路口信息作为测试数据。
通过测试,协调了由百度SDK自启进程所需时间与系统展
示所需时间上存在的差异;发现在路况与导航功能中用于规划路
径的坐标点与真实的坐标点之间存在经度大约有0.0066度偏差,
纬度大约0.00619度偏差。针对该问题解决方案是在结点赋初始
值时做相应的调整。最终实现了比较完善的可以进行判断路况拥
堵,以及智能规划路径的地图应用。
结论:本系统基于百度地图SDK、百度导航SDK、百度LBS云
接口实现了主要的实时路况,及导航功能。本系统是初次针对
android的相关设计及开发,对android开发的熟悉程度有限,对
代码的管理、调试等方面存在许多不足,使得系统显得较为冗杂,
本系统还需要调整才能更方便以后的扩充与完善。同时,因采用
重写系统菜单的方法使得对于不同的android版本,界面的效果
有变化,所以对界面的设计还需针对不同分辨率的屏幕进行更精
细的设计。总之,利用文中工具及方法虽还有诸多不足,但针对
实时位置信息获取、公共地图API应用、以及路况分析与导航探
索出一条可行的方案,为解决真正实时问题和灵活导航研究能提
供一些帮助。
参考文献
[1]郭雪婷,秦艳丽,雷震.基于出租车GPS数据的城市道路拥
堵判别[J].交通信息与安全,2013
[2]史风林,吕廷杰,李建祥.基于手机位置信息的实时路况信息
服务[J].计算机系统应用,2008
[3]杨恒,李彬,郭丹.定位技术[M].电子工业出版社,2013
[4]段莉琼,朱建军.改进的最短路径搜索A*算法的高效实现[J].
海洋测绘,2004
[5]百度.Android SDK[EB/OL].developer.baidu/map/sdk-android.htm
207
GLOBAL CITY
GEOGRAPHY