基于Android的移动平台位置服务应用研究

时间:2022-08-29 03:12:58

基于Android的移动平台位置服务应用研究

摘要:为了提高人们对地图的使用效率,应用在制作的过程中本着“便捷”“实用”的特点,针对手机地图的功能进行分析。在借鉴百度地图API(Application Programming Interface,应用程序接口) 优点的基础上,利用位置服务技术,完成用户的自我定位、附近信息以及路线导航等功能。

关键词:Android 平台;手机地图;百度地图API;位置服务

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)31-0046-02

1 位置服务简介

根据百度百科的定义,位置服务(LBS,Location Based Services)又称定位服务,LBS是由移动通信网络和卫星定位系统结合在一起提供的一种增值业务,通过一组定位技术获得移动终端的位置信息(如经纬度坐标数据),提供给移动用户本人或他人以及通信系统,实现各种与位置相关的业务。实质上是一种概念较为宽泛的与空间位置有关的新型服务业务。

2004年,美国学者Reichenbacher将用户使用LBS的服务归纳为五类:定位(个人位置定位)、导航(路径导航)、查询(查询某个人或某个对象)、识别(识别某个人或对象)、事件检查(当出现特殊情况下向相关机构发送带求救或查询的个人位置信息)。

本文所研究的是基于电子地图的一种定位、导航、查询与位置相关的服务研究。

2 Android系统简介

Android(安卓)是目前市场上应用最广泛的开源系统之一,它以Linux内核为根基。安卓与其他的系统的构架类似,采用了分层的形式,平台的体系构架从上到下分为四层,第一层是提供核心应用程序的应用程序层;第二层是应用开发的基础――应用程序框架层;第三层是支持各个组件运行的系统运行库层;第四层是作为安卓内核的 Linux核心层。

在应用程序中,并非每个应用程序都只有一种组件构造的,大多数应用程序是由各种组件构造的,跟其他应用程序一样,Android应用程序也不一定只用一种组件,它通常是由四种组件构造而成的,但也有特殊情况的时候不用或者不止用这四种组件构造。

第一种是作为众多应用程序组件中的基础组件――Activity,用户运行程序看到的界面就是一个Activity,这个组件用于与用户进行交互。

第二种是对外部的事件做出响应时使用的组件――Broadcast Intent Reciver,作为能够接收从sendBroadcast()发出的intent的基类。

第三种与第一种组件拥有相同等级,但它不在界面上显示,只能在后台运行的组件――Service,虽然它不在界面上显示,但可以在后台和别的组件进行互动。

最后一种是在不同的软件之间进行数据共享,提供统一的接口的组件――ContentProvider。

3 移动地图实现

3.1主界面的实现

主界面通过线性布局的方式来设计,为了用户直观的选择地图服务提供了方便,主界面实现过程如下:

1)首先将activity_main.xml文件的总体布局设置成线性布局(LinearLayout),在总体布局下设置两个字线性布局,将他们的属性设置好,第一个线性布局将权重设(layout_weight)为20,调用百度提供的BaiduLBS_Android.jar包中的com.baidu.mapapi.map.MapView类生成组件,设置相关属性;第二个线性布局将权重设为1,设置四个Button组件,组件名分别为登录、定位、附近和路线,设置它们的属性。

2)将布局创建好后,打开MainActivity.java开始编写代码。在各种组件初始化以及setContentView方法实现之前,先将ApplicationContext传入SDKInitializer的initialize()方法中,接着调用MapView取得MapView对象,之后调用BaiduMap mBaiduMap = mMapView.getMap()获取地图。

运行程序,即可在手机上显示出该应用,如图1。

3.2搜索功能的实现

用户将城市与地点输入后,单击 “搜索”按钮,应用将会在地图上显示出对应的地点。实现此功能的步骤如下:

1)应用先获取用户输入的城市和地点,作为内容传到PlaceSearchActivity中的。

2)在PlaceSearchActivity类中接收传递过来的数据。

3)对数据进行解析并查找对应的经纬度,将该地点显示在应用上。

3.3 定位功能的实现

单击“定位”按钮,程序会在后台实现它的功能,并在界面上显示用户所在的位置。实现的步骤如下:

1)使用LocationClient类实例化一个对象,通过该对象的registerLocationListener()方法注册监听函数。

2)定义一个MyLocationListener类,并实现BDLocationListener类,重写onReceiveLocation()方法。在onReceiveLocation()中{用StringBuffer类,设置相关属性,接着调用BitmapDescriptor类获取显示用户位置的图片以及LatLng类获取用户所在的经纬度,并用OverlayOptions类把图片和经纬度关联起来,使用BaiduMap类中的addOverlay()方法添加到地图中。

3)在MainActivitu中调用MyLocationListener类并实例化,将实例化的listener传入LocationClient类的方法registerLocationListener()中。在locationClick()中设置相关属性。

3.4 附近界面的实现

点击 “附近”按钮,程序将跳转到与按钮关联的“附近”界面,用户可以在文本框中输入中心点和目标场所进行查找。具体实现过程如下:

1)调用PoiSearch类实例化poiSearch对象,调用newInstance()方法,接着调用OnGetPoiSearchResultListener类实例化poiListener对象,并在poiListener对象里重写onGetPoiResult()方法和onGetPoiDetailResult()方法。

2)在onGetPoiResult()方法中获取POI检索结果,调用PoiResult类中的getAllPoi()方法,接着调用BitmapDescriptor类获取显示用户位置的图片以及LatLng类获取用户所在的经纬度,并用OverlayOptions类把图片和经纬度关联起来,使用BaiduMap类中的addOverlay()方法添加到地图中。

3)将poiListener对象传入poiSearch对象调用的setOnGetPoiSearchResultListener()方法中。

4)在searchOnclick()方法中对输入的内容进行检索,调用PoiSearch类的searchInCity()方法。

3.5 路线界面的实现

点击 “路线”按钮,程序便会跳转到“路线查询”界面,在“路线查询”界面上可以看到两个编辑框以及四个按钮,左边的编辑框对应起始地点,右边的编辑框对应目的地点,四个按钮代表四种出行方式。用户在编辑框中输入起始地和目的地,在四种出行方式中选择出行方式,即可在地图上显示出路线信息。

路线查询模块被设置成RoutePlanActivity类,具体实现过程如下:

1)RoutePlanActivity类实现OnMapClickListener,OnGetRoutePlanResultListener接口,在布局文件中定义两个文本编辑框,分别对应路线的起始地址和目的地址,以及添加四个表示步行、驾车、公交和骑行查询方式的Button按钮和显示地图的MapView组件。

2)然后对调用MapView以及BaiduMap对地图进行初始化,调用RoutePlanSearch类对搜索模块进行初始化,并调用RoutePlanSearch类的setOnGetRoutePlanResultListener()方法注册事件监听。

3)对四个按钮设置onClick属性,值为searchButtonProcess。在RoutePlanActivity中实现searchButtonProcess()方法,并在searchButtonProcess()方法中处理搜索按钮的响应。

4)在重写的方法中onGetDrivingRouteResult(),nGetTransitRouteResult(),onGetWalkingRouteResult(),onGetBikingRouteResult()分别驾车、公交、步行和骑行四种出行方式。

4 总结

电子地图作为用户出行时为其提供地理信息的工具,要与我们日常生活的环境相匹配,但用户存在移动性,为了符合用户的移动性、位置性,电子地图上每一个POI(Point of Interest,信息点),都要与现实中的信息相匹配,在每一个POI点上都要搭载相关的地理信息数据。在O2O业务和移动互联网平台快速发展的时代,地图作为用户和商户之间联系的桥梁,占据着重要作用。

参考文献:

[1] 张云.Windows下Android应用程序开发环境搭建详解[J] .计算机时代,2013(1):32-34.

[2] 杜G绥.基于Android平台架构应用程序开发研究[J].电脑编程技巧与维护,2013(6):12-13.

[3] 吴丽淳,樊爽.基于安卓平台的手机定位软件开发[J].计算机与现代化,2014(9):95-98.

[4] 谢涛.基于WiFi的室内定位系统的设计与实现[D].南京:南京大学,2013.

[5] 程志平.如何构建一个基础的百度地图页面[J] .数字化用户,2013(28).

上一篇:MOOC在地方高校中的应用研究 下一篇:网络安全课程实验教学设计与实践