APP下载

基于Android 的地图位置服务系统的设计与实现

2016-06-29孙杰樊春年秦健勇

电脑知识与技术 2016年13期
关键词:路径规划位置服务定位

孙杰 樊春年 秦健勇

摘要:为了使人们能够随时随地获取地理信息,在手机上实现地图服务就显得极为重要。该文以新疆大学本部校园为例,设计实现一个基于Android的地图位置服务系统。系统主要具有地图加载、自身实时定位、校内地点搜索、路径规划、位置提醒以及短信定位功能。

关键词:位置服务;百度地图API;定位;路径规划

中图分类号:TP311 文献标识码:A文章编号:1009-3044(2016)13-0091-03

Abstract:In order that peopleenable to obtain location information in anytime and in anywhere, it is extremely important that to implementation of map services on the mobile phones.This paper took Xinjiang University main campus as an example,designed and implemented an location service system based on Android. The System has mainlyfunction, such as map loading, real-time location,location searching,route program, location hinting and message location.

Key words: location service;Baidu Map API; location; route program

随着移动通信技术和计算机技术的发展,带动了基于位置的服务[1]。3G技术和智能手机的普及,GPS与地图服务的整合,为基于移动设备的位置服务供了良好的应用环境。本文研究如何在Android平台上利用百度提供的Baidu Maps API实现基于位置的服务,基于位置的服务要解决的主要问题就是如何为用户提供个性化的服务。目前移动位置服务大多数是针对城市或街区范围而言,对于较小空间范围的校园或景区的移动位置服务较少。设计面向校园用户及特地区域的地图导航软件,为其提供定位、搜索、探路、事务办理所需的位置信息,是地图导航APP要解决的问题。

1 百度地图API

百度地图API是一套为开发者免费提供的基于百度地图的应用程序接口,包括JavaScript、iOS、Andriod等多种版本,提供基本地图、位置搜索、路线规划等数据服务[2].百度地图为开发者提供了com.baidu.mapapi.map地图包,主要负责控制地图的显示,下面是本系统开发中用到几个主要的类[3]:

MapView:显示地图的View,当被焦点选中时,它能捕获按键事件和触摸手势去平移和缩放地图。它和Button等控件定义类似,通过findViewById方法获取,建立类文件时继承Activity即可。

MapController:地图控制器,用于控制地图的移动,放大,缩小等功能。MapView调用函数MapView.getController()获取MapController实例。

Overlay:覆盖物,即在百度地图上进行二次开发时添加的图层类,可以设置在地图上显示图标,文字等信息,通过在底层地图上添加图层来满足我们的应用需求。Overlay是一个基类,它表示可以显示在地图上方的覆盖物。

2 功能设计

本系统以新疆大学为例,研究了校园用户对地图服务的需求,在此基础上设计了相应的功能。系统用例图如图1所示。

1)自身实时定位功能:用户可以得到当前所在的具体位置,如校园道路名称等,并且在地图上实时的标注出来,可以根据用户的位置的改变而改变,方便用户获得准确的信息。系统支持两种地图显示方式,即交通地图与卫星地图。。

2)校内搜索功能:用户通过系统提供的搜索文本框,可以查询附近的一些标志性建筑的具体位置,以及对该位置的一些具体描述。如同学们关心的教师办公室的具体位置以及联系方式等,或者附近餐厅以及娱乐场所等。。

3)邻近范围提醒功能:当用户手持设备进入特定区域内,即可收到靠近目标位置的提醒,提示用户该地区内的详细信息。如靠近一号教学楼附近20米时,用户打开邻近范围提醒界面将会收到一条提醒,“您已经到达一号教学楼附近,该教学楼主要有新闻学院以及生物科学学院等”这样的信息。

4)短信定位模块:短信定位这一功能还可用于用户走失时对其进行寻找。通过给对方发送短信,后台启动对方的定位服务(前提:对方必须安装此软件),获取位置信息后系统将会自动发送一条包含经纬度的短信给发送方,发送方收到短信时,解析短信内容,获取经纬度显示在地图上。

5)路线查询功能:校园导航系统的基本功能。用户可以根据需要查询从源点到目标地点的可行线路,并提供实时导航服务,同时也可以选择两点间的最短路线。

3数据库设计

由于本系统需要后台存取大量数据并且还需要根据不同条件进行查询,若采用xml文件存储,则对查询带来诸多不便。因此本系统采用了SQLite数据库进行数据存储,方便管理与查找。下面是本系统数据库中定义的一些表:PLACE表用于存放本地化数据包括新疆大学校园内部的一些餐厅,教师办公室等;ROUTE_PLAN表主要存放一张图的信息,包括点以及权值,用于计算最优路径。其具体设计如表1和表2所示。

4 系统实现关键技术

4.1主界面设计

系统主界面定义了整个系统的全部功能,主要包含自身定位、校内地点搜索、范围提醒、短信定位以及路线导航五大功能。如图2所示。

4.2校内搜索技术

实现技术包括:Spinner下拉框控件与数据库信息的绑定,实现无输查询;搜索功能子线程的实现,保证程序的正常运行;文本信息拨打电话格式的实现;View与Bitmap的转换,绕过付费许可,实现在地图上添加文字。校内搜索结果将具体的位置显示在卫星图上,同时显示该位置的具体地址以及联系方式,为用户查找提供方便。如图3所示。

4.3路径规划技术

路径规划采用了Floyd-Warshall算法,它是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题。算法的时间复杂度为O(N3),空间复杂度为O(N2)。Floyd算法是一个经典的动态规划算法,目标是寻找从点i到点j的最短路径[4]。从动态规划的角度看问题,从任意节点i到任意节点j的最短路径有两种可能:一是直接从i到j;二是从i经过若干个节点k到j。因此,假设Dis(i,j)为节点u到节点v的最短路径的距离,对于每一个节点k,检查Dis(i,k) + Dis(k,j) < Dis(i,j)是否成立,如果成立,证明从i到k再到j的路径比i直接到j的路径短,便设置Dis(i,j) = Dis(i,k) + Dis(k,j),如此一来,遍历完所有节点k,Dis(i,j)中记录的便是i到j的最短路径的距离。

使用算法前要求系统输入一个图的信息,该图的信息提前以起点,终点以及权值的信息存放在数据库表中,用户查询前首先通过数据库查询出各节点信息,通过算法转换成该图的邻接矩阵,将邻接矩阵传入FLOYD算法中求出起点与终点之间的最短路径的一组点,在将通过这一组点分别去数据库中查询对应的经纬度,再将这一组经纬度通过百度的路径显示显示到地图上。

图4为现有导航软件对于校内的路径规划,图5为本系统实现的一段最优路径规划,对比可以发现经过最优规划的路径,更加符合实际日常出行线路。

5 结束语

本文介绍了基于Android手机的地图应用软件的开发,通过对当前流行的Baidu Map API平台进行分析,在此基础上提出了地图位置服务。该系统实现了校内位置搜索、路线导航、短信定位等功能,具有较高的实用性。当然,该系统还需要进一步的完善,需要在日后的工作中不断地探索和研究,以形成一套更加实用方便的地图服务系统。

参考文献:

[1] 陈金海.基于Android平台的手机地铁导航系统的设计与实现[D].昆明: 云南大学,2012.

[2] 百度地图API[EB/OL].http://lbsyun.baidu.com.

[3] 隆志坚.Android平台基于baidu Map Api的导航应用技术研究和实现[D]. 长沙: 国防科学技术大学, 2011.

[4] 最短路径—Dijkstra算法和Floyd算法[EB/OL]. http://www.cnblogs.com/biyeymyhjob/archive/2012/07/31/2615833.html.

猜你喜欢

路径规划位置服务定位
《导航定位与授时》征稿简则
Smartrail4.0定位和控制
找准定位 砥砺前行
互联互通 畅享未来 第12届卫星导航与位置服务运营商大会在深圳举行
第六届中国卫星导航与位置服务年会暨首届卫星应用国际博览会
青年择业要有准确定位
中位协二十周年庆典暨第四届中国卫星导航与位置服务年会将在北京举行
位置服务中服务点空间可达性评估模型分析