基于Android 的多地点路线规划应用
2021-03-24梁碧莹莫琦蔡家欢
梁碧莹 莫琦 蔡家欢
(广东石油化工学院,广东茂名 525000)
1 项目实施的目的及意义
当今,互联网地图的应用已经越来越广泛,其提供的信息和搜索服务给广大人民的工作和生活带来极大的便利。由于人们生活水平的提高,对出行游玩的需求日益提升,地图软件新功能开发迫在眉睫。旅行路线规划代表着未来生活以及商业方式的发展方向之一,其应用和推广将给社会和经济带来极大的效益。
传统的地图软件功能单一,多数只能提供两地点间的路线规划。其次,用户出行时需要一点点搜索目的地美食、景点、酒店、交通等信息,这些信息的获取会消耗很多时间和精力,同时缺少一种有效方式去组织这些凌乱信息。使用户无法高效灵活的出行。
图1 系统总体框架图Fig.1 Overall framework of the system
本应用提出一种景点推荐和路线规划相结合的新型模式,在精准推荐中,将用户搜索中所产生的地理位置数据记录与分析建立用户个性数据库。在行程规划中,用户可以先根据自身喜好选择所提供的路线,再根据个人的需求对路线中的部分安排进行更改,比如出行地点的替换,出行顺序的调整等,生成一条用户专属的个性化路线。生成的行程单中包含多个地点间的出行方式比如驾车、步行、公共交通等导航。给予用户出行效率提高和服务智能化的优质使用体验。
2 系统总体构架
系统采用Android9.0平台,使用Java编程语言,采用Android studio开发工具,使用Google开发工具包Android sdk。本系统主要是客户端,包括城市介绍、周边人文景物的推荐、景点添加,以及调用地点坐标,通过百度地图接口[1]实现路线的规划。具体系统总体框架如图1所示。
3 系统各模块实现
该APP的总体结构是以三个Activity(活动)外加三个Fragment(碎片)构成的。如图2所示。
初始化的Activity,由于调用了百度地图的SDK[2],所以在使用之前需要在Activity的OnCreate方法里面对SDK进行初始化,重点是向百度申请APIkey、以及B Map Manager类的初始化,对于后续的地图搜索都是基于这个类操作的,当app退出前台时,在OnDestroy方法里面对BMapManager类进行销毁,然后需要将BMapManager设置为静态类,用于首页、推荐、行程Fragment的调用。其次,在Activity里面,添加了动态权限,用于App启动时,自动检测该App是否打开定位权限,若没有,将跳转到设置里面让用户打开GPS定位。
图2 APP 框架图Fig.2 App framework
第一个界面是是首页的Fragment,其功能是推荐一些所在位置附近的景点玩乐,周边美食,博物馆与艺术馆等。具体实现是使用POI的搜索信息,达到向用户精准推荐。主要使用BDLocationListener的接口,重写内部onReceiveLocation方法,用于获取当前位置的经纬度,使用PoiSearch类的searchNearBy方法,将经纬度、输入以自己定位为中心的半径,可以是100m或者是1000m、以及人文历史或博物馆等数据放入到PoiNearbySearchOption类,再将该类传进searchNearBy方法中,就可以获取附近景点玩乐、周边美食的数据,再对数据进行模块化分类保存,用户通过点击不同模块,可以跳转到推荐的Fragment里面,相关内容在推荐的Fragment界面中详细显示。
第二个是推荐的Fragment,里面的地理信息列表会根据推荐的Fragment点击的内容不同而改变,在每一行地理信息中都会有添加至行程标志, 用于添加到行程的Fragment里面,添加的信息保存是该地点的经纬度。关于地点的详细描述,是通过点击其中一个地点之后实现跳转到第二个Activity(详细内容显示),此时需要在onCreate方法里面初始化LocationClient类,实现BDAbstract LocationListener的接口,并实现onReceiveLocation方法,获取详细的地理位置信息。
第三个界面是行程的Fragment,该界面的功能是实现多个地点的路线规划。在地图上显示在推荐的Fragment里面选好的地点,用户可以手动点击的方式对出行地点进行排序,排完序之后点击一键生成,系统将各个地点连成一线,以自己驾车路线为主,需要初始化RoutePlan Search类,实现OnGetRoutePlanResult Listener接口并重写onGetDrivingRoute Result方法,除此之外还要实现PlanNode这个类,需要实现两个, 分别是开始地点与目的地, 将这两个地点加入到RoutePlanSearch对象中的一个drivingSearch方法即可,就能在地图上显示路径,往下也是一样,如果有四个地点,将第一个地点和第二个地点分别设置为开始和目的地,以此类推,就是第二个地点和第三个地点分别设置为开始和目的地,以类似于链表的形式进行处理。在底部还有全部行程的列表显示,可以点击不同的行程然后在地图上显示路线。点击全部行程可以跳转到行程列表的Activity,点击后可以跳转到原来的地图界面显示路径。
4 结语
本文设计的面向Android手机用户的多地点路线规划应用,将推荐功能与地图软件相结合,利用重写百度地图接口方式实现多地点排序,并结合步行,公交,打车等多种方式,给用户提供全面的出行路线方案。由于地图服务具有日常适应性,下一步的工作是在此基础上,结合用户需求,实现更多个性化应用服务。