APP下载

基于百度地图的“乐游”软件设计与实现❋

2016-02-05王文强王宏亮蔡朝阳

微处理机 2016年6期
关键词:百度轨迹定位

王文强,王宏亮,蔡朝阳

(辽宁石油化工大学计算机与通信工程学院,抚顺113001)

基于百度地图的“乐游”软件设计与实现❋

王文强,王宏亮,蔡朝阳

(辽宁石油化工大学计算机与通信工程学院,抚顺113001)

随着人民生活水平的提高,自助旅游受到越来越多的关注。自助旅游需要对行程进行详细的规划,掌握路径、景点、天气、周边环境等信息,并随时获得导航帮助以及查询旅游进度、记录旅游感悟,以此保障旅游的品质。面向自助旅游专门设计了一款基于百度地图的“乐游”APP以满足用户的出行需要。该APP应用于android平台,集成路径规划、路径沿途天气查询、导航、轨迹追踪以及游客周边兴趣点查询等为一体,并且提供本地收藏功能,采用xml技术解析数据,对于用户上传的图片信息采用记录地址方式进行存储,避免缓存图片过多而形成数据冗余。

百度地图;APP应用;路径规划;轨迹追踪;兴趣点查询;感悟收藏

1 引 言

自助旅游是当下新兴起的一种旅游方式,人们自己设计路线,自己安排旅途中的一切,自由、主动,行程中旅游感悟深刻,充满艰辛而又富于诗情画意。但是自助旅游中所涉及的吃、住、行、游、购、娱,所有事情全由自己安排,操作起来比较繁琐,只有借助现代科技带来的便捷,才能保证行程的圆满。

随着社会发展,目前全球的手机用户数量已经超过了PC机的数量,而且手机数量正在快速增长,其中智能手机所占的比例越来越大[1]。智能手机及其应用已经成为了人们身边不可或缺的一部分,特别是Android平台借助于其开源免费,兼容性强等优点迅速占领了移动平台市场的最大份额[2]。基于Android平台的开发已经成为开发者们重点关注的领域[3-4]。各种地图搜索引擎(百度地图,高德地图)虽然已经可以在多方面支持自助旅游,但是由于面向的游客过于庞大,针对旅行的专题较少,信息比较概略,难以充分表达旅游的专题信息,因此产生了基于地图专门服务于自助旅游的集成APP的需求。

百度地图API号称永久免费,提供了面向游客定制个性化服务的功能,为实现旅游专题信息检索和地图服务创造了便捷[5],因此专门针对自助旅游爱好者开发了“乐游”软件,为自助出游提供所需的必要帮助。

2 百度地图API简介

百度地图API是一套为开发者免费提供的应用程序接口,包括JavaScript,ios,Android,其中百度地图Android SDK适用于Android2.1及其以上版本设备。开发者可以使用SDK开发适用于Android系统移动设备的地图功能,通过调用地图SDK可以访问百度地图服务和数据,构建功能丰富、交互性强的百度地图应用程序。百度地图Android定位SDK是为Android移动端应用提供的一套简单易用的LBS定位服务接口,专注于为广大开发者提供最好的综合定位服务,通过使用百度定位SDK,开发者可以轻松为应用程序实现智能、精准、高效的定位功能[6]。

3 系统设计

综合考察自助出游游客的需求,设计“乐游”APP其功能结构如图1所示,功能模块包括:

1.路径规划与跟踪。在百度地图提供的技术支持基础上进行二次开发,提供自助出游游客旅游路径规划、导航功能并实时定位与追踪旅游进度。

2.旅游小憩功能。面向游客旅游感悟,记录旅游心得与评价,保存旅游沿途珍贵照片,同时方便游客查看、修改。

3.兴趣点管理功能。通过热力地图实现周边兴趣点查询,以及兴趣点周边的天气情况查询,方便游客了解周边的旅游景点情况并导航出行。

图1 “乐游”APP系统功能结构图

系统设计基于Android平台,利用Android SDK提供的功能支持与百度地图数据库服务器进行数据通信,系统架构见图2所示。

图2 基于百度地图的APP系统架构

采用GPS、WIFI、基站、IP混合定位模式,借助Android定位SDK获取定位信息,通过地理编码将地球表面的地址坐标转换为标准地址,实现对于游客位置的定位,在此基础上调用百度地图API实现游客所需功能服务。

4 系统实现

4.1 定位技术

综合定位功能指的是根据游客实际需求,返回游客当前所处位置的基础定位服务,“乐游”软件定位功能运行效果如图3所示。

创建定位服务步骤如下:

1.初始化LocationClient类,在onCreatea方法中获取LocationClient并为其添加注册监听函数。

2.配置定位SDK参数,设置定位模式(LocationMode),设置坐标类型,设置是否允许模拟GPS,设置是否需要POI结果等。

3.实现BDLocationListener接口。重写on ReceiveLocation(BDLocation location)方法,用于定位请求回调函数(其中BDLocation表示定位结果),接收异步返回的定位结果。

4.开始定位:调用start()方法。

图3 “乐游”APP定位服务

4.2 路径规划与导航

用于满足游客出行前旅游线路规划的需求。百度地图导航SDK的代码Jar包由Java源代码编译打包而成,具有路径规划和导航、自定义图层,语音播报等功能。资源Jar包由导航所需的配置数据、基础数据以及导航功能所需的布局、字符串等资源打包而成。So动态库是由native代码编译而成,主要实现地图导航、路线规划等功能[7]。软件运行效果如图4所示。

图4 “乐游”APP路径规划与导航

设计借助百度地图路径规划与导航SDK代码包实现:

1.创建一个Activity继承Activity并实现On-MapClickListener和OnGetRoutePlanResultListener接口。

2.获取游客输入的地址信息,并初始化地图控件。

3.创建一个RoutePlanSearch对象,添加设置路线检索监听者(setOnGetRoutePlanResultListener(OnGetRoutePlanResultListener listener))。

4.获取游客选择的路径规划方式(驾车,公交或步行)并向RoutePlanSearch实例添加设置出行方式。路径规划成功后,通过route.getAllStep()获取Object对象数据,并根据出行方式(判定Object对象是那个类型的子对象)获取百度地图提供的出行路线。

5.导航(部分代码)

4.3 路径沿途天气查询

考虑到旅游过程中天气因素对用户出行的影响,为了让用户有更加良好的旅游感悟,提供了天气查询功能。该功能为用户提供天气查询服务,让用户在使用过程中即时了解天气的变化,提前做好应对工作,方便用户出行需求。软件运行效果如图5所示。

实现过程:

1.利用百度地图API建立一张地图,展现中国全貌。

2.利用地图API提供的本地搜索功能,根据提供的城市名称搜索所处位置并在地图上进行标记。

3.在各城市标记点上设计弹出窗口来显示天气信息。天气信息的获取则通过php脚本直接对百度的各城市天气搜索页面进行天气信息的抓取。

4.解析网页信息,将网页信息存放在android页面中。

图5 “乐游”APP天气查询

4.4 兴趣点查询

游客出行存在兴趣偏好,通过用户输入偏好的关键字查询,为用户展示周边存在的兴趣点,方便用户的旅游规划,以及行程中了解周边旅游资源的分布。软件运行效果如图6所示。

图6 “乐游”APP兴趣点查询

具体实现如下:

1.调用定位功能,获取当前地点信息。

2.实例化一个PoiSearch类对象,并向该对象设置poi检索监听者setOnGetPoiSearchResultListener(OnGetPoiSearchResultListener listener)。

3.创建SuggestionSearch对象,同样设置监听器。

4.监听游客点击的按钮,并在OnClick方法中搜索周边景区兴趣点,其中city和place都是以字符串形式传递过来,实行周边兴趣点检索。核心代码如下:

mPoiSearch=PoiSearch.new Instance();//创建POI检索实例。

4.5 热力地图查询

游客在旅游路途中有景点热度查询需求,热力地图查询为游客提供周边景点热度信息。百度地图热力图是用不同颜色的区块叠加在地图上实时描述人群分布、密度和变化趋势的一个产品,是基于百度大数据的一个便民出行服务。系统调用百度地图api客观的反应旅游区的热门程度,以及人流量,方便游客提前做好规划。软件运行效果如图7所示。

图7 “乐游”APP热力地图查询

实现步骤包括:

1.创建一个Handle对象,并在对象中实现handleMessage()方法。

2.创建一个Thread对象,并覆盖线程当中的run方法,在run()方法中实例化heartMap,将游客的位置信息放入一个list对象当中。

3.调用该线程的start()方法 。发送一个empty消息。

4.游客信息用于接收Json消息,并将Json消息放到一个list集合中。在OnPause方法中,将地图功能暂停,在OnResume方法中恢复地图控件的使用。

4.6 轨迹追踪

满足游客旅游过程中随时掌握当前旅游定位以及行程进度的需求,软件运行效果如图8所示。

图8 “乐游”APP轨迹追踪

实现过程由四步完成:

1.实例化轨迹服务客户端,同时创建鹰眼服务Id。

LBSTraceClient client=new LBSTraceClient(getApplicationContext());

2.实例化轨迹服务,创建一个Trace对象开启轨迹服务回调接口arg0:消息编码,arg1轨迹服务推送接口用于接收服务端推送消息,arg0:消息类型,arg1:消息内容,复写onTraceCallback()和on TracePushCallback()方法。

3.开启轨迹追踪,并调用绘制轨迹。

client.startTrace(trace,startTraceListener);

4.结束轨迹追踪服务。

创建一个OnStopTraceList接口类型的对象,并复写其中的onStopTraceSuccess()方法和on-StopTraceFailed()方法,在客户端调用stopTrace(trace stopTraceListener)方法。

其中绘制轨迹核心代码如下:

4.7 旅游感悟收藏

采用xml存储数据,侧重于本地实现。在没有消耗数据流量的基础上,保存游客的旅游心得以及图片信息,并加以管理,打造游客自己的专属功能。软件运行效果如图9所示。

图9 “乐游”APP旅游感悟收藏

系统采取xml文件方式保存游客感悟及照片,采用XmlSerializer和XmlPullParser对xml文件进行解析和创建修改[8],获取游客在手机上存放的信息,通过游客的点击事件实现游客需要的上传、浏览和管理功能。

具体实现步骤包括:

1.为游客上传部件添加事件监听器,在Onclick()方法中添加用户上传事件。

2.获取游客的位置信息,通过DBLocation对象的getAddrStr()方法,获取用户的位置信息。

3.接收游客的旅游箴言以及上传图片的src地址,并将src通过特殊符号进行连接,使之形成一个字符串,该字符串用于存储用户的上传图片地址。在浏览用户旅游感悟时,获取该字符串,并加以切割,以便展示用户旅游感悟附带的图片信息。

4.获取当前的时间存储便于遍历排序。

5.判断存放游客信息的xml文件是否存在,若存在,就向该文件添加元素节点,若不存在就创建该文件,根据XmlPullParser提供的方法解析xml文件,添加该节点。操作成功后销毁该Activity。

4.8 我的旅游日记管理

用户页面采用类似网格布局方式,图片下方显示游客旅游感悟,如图10所示。

图10 “乐游”APP旅游日记管理

实现过程:

1.查看游客信息文件是否存在,若不存在,则给出提示信息,反之,则采用XmlPullParser技术遍历该xml文件。

2.获取解析对象Xm lPullParser reader=XML. newPullParser()。

3.创建一个集合,将遍历到的xm l属性写入集合中。

4.对游客输入的图片地址加以切割,得到游客文件的真实地址。

5.将游客的旅游感悟显示在界面中。

5 结束语

“乐游”APP系统基于百度地图API,Android平台,结合xml技术开发而成,功能上基本满足了自助旅游游客的行程需要。特别是个性化地定制了旅游感悟和照片的本地保存以及管理功能,打造了属于游客出游的专属空间。下一步,将在此应用基础上进一步调研游客需求,添加新功能以及将已有功能进一步整合,以期实现软件的真正实用化。

[1] 熊刚.基于Android的智能手机的设计与实现[D].武汉:武汉理工大学,2010. Xiong Gang.Design and implementation of smartmobile phone based on Android[D].Wuhan University of Technology,2010.

[2] 刘卫国,姚昱禹.Android的架构与应用开发研究[J].信息与电脑,2012(5):55-56. Liu Weiguo,Yao Yuyu.Study of Android's Architecture and Its Application Development[J].China Computer&Communication,2012,5:55-56.

[3] 杨丰盛.Android应用开发揭秘[M].北京:机械工业出版社,2010. Yang Fengsheng.Android Unleashed[M].Beijing:China Machine Press,2010.

[4] 明日科技.Android从入门到精通[M].北京:清华大学出版社,2012. Tomorrow Technology Co.,Ltd.Android from entry to themaster[M].Tsinghua University Press,2012.

[5] 王红崧,周海晏.基于百度地图API的旅游地理信息系统开发[J].现代计算机,2012(8):60-63. Wang Hongsong,Zhou Haiyan.Development of Tourism Geographic Information System Based on Baidu Map API[J].Modern computer,2012,8:60-63.

[6] 殷玥,刘伟,郭东恩.基于百度地图API的房地产展示系统的实现[J].软件导刊,2012,11(9):163-164. Yin Yue,Liu Wei,Guo Dongen.Implementation of Real Estate Trade System based on Baidu API[J].Software Guide,2012,11(9):163-164.

[7] 余志龙,陈昱勋,郑名杰,陈小风,著.Google Android SDK开发范例大全(第3版)[M].北京:人民邮电出版社,2011. Yu Zhilong,Chen Yuxun,Zheng Mingjie,Chen Xiaofeng. Google Android SDK development paradigm(3rd Edition)[M],Beijing:Posts&Telecom Press,2011.

[8] Kathy Sierra&Bert Bates.First Head Of Java[M].北京:中国电力出版社,2007. Kathy Sierra&Bert Bates.First Head Of Java[M]. Beijing:China Electric Power Press,2007.

Design and Im p lementation of Le Tour Software Based on the Baidu Map

Wang Wenqiang,Wang Hongliang,Cai Zhaoyang
(School of Computer and communication enginering,Liaoning Shihua University,Fushun 113001,China)

With the improvement of people's living standards,the self-service travel attractsmore and more attention,which requires some information such as detailed itinerary planning,path,attractions,weather,other surrounding environment,access navigate help,query travel schedule,tourism experience record and so on.Le-Tour APP is designed to improve the quality of tourism based on the Baidumap for demands of self-service travel,which is based on Android platform and integrated with path planning,weather query along path way,navigation,trajectory tracking,tourists interest query,and provides the local collection function.XML technology is used to resolve the data and store travel tips and photos by recording picture address storage to prevent data redundancy because of too much memory and the formation.

Baidu map;APP Application;Route plan;Trajectory tracking;Point of interest query;Sentiment collection

10.3969/j.issn.1002-2279.2016.06.010

TP311.1

A

1002-2279(2016)06-0038-06

辽宁省教育厅资助科研项目(L2014153)

王文强(1994-),男,湖北省仙桃市人,辽宁石油化工大学本科生,主研方向:软件工程等。

王宏亮(1971-),男,辽宁省抚顺市人,副教授,主研方向:计算机集成制造、软件工程。

2016-04-26

猜你喜欢

百度轨迹定位
《导航定位与授时》征稿简则
轨迹
轨迹
Robust adaptive UKF based on SVR for inertial based integrated navigation
Smartrail4.0定位和控制
轨迹
找准定位 砥砺前行
百度年度热搜榜
进化的轨迹(一)——进化,无尽的适应
青年择业要有准确定位