APP下载

基于Android的旅游地图小帮手的开发

2019-09-10刘萍章胜江

现代信息科技 2019年7期
关键词:软件开发

刘萍 章胜江

摘  要:随着智能手机的飞速发展,Android平台为很多人所熟知,人们使用Android的频率也越来越高,Android手机在各个领域中的使用越发重要,通过使用手机可以获得人们想要的信息。随着社会生产力的提高,每个家庭除了生活开销之外还有所结余,因此,越来越多的人利用工作之余出去游山玩水,但是在游玩的过程中,携带的纸质地图不方便,或者忘记携带地图,会给旅游带来一定的麻烦。为了解决这个问题,本文提出基于Android的旅游地图小帮手的开发。

关键词:旅游地图APP;Android;软件开发;移动终端地图服务

中图分类号:TP311   文献标识码:A   文章编号:2096-4706(2019)07-0037-03

Abstract:With the rapid development of smart phones,Android platform is well known to many people. People use Android more frequently. The use of Android mobile phones in various fields is becoming more and more important. By using mobile phones,people can get the information they want. With the improvement of social productivity,every family has some surplus besides living expenses. Therefore,more and more people use their spare time to go sightseeing. But in the process of playing,it is inconvenient to carry paper maps or forget to carry maps,which will bring some trouble to tourism. In order to solve this problem,this paper proposes the development of a small assistant of tourism map based on Android.

Keywords:tourist Map APP;Android;software development;mobile Map service

0  引  言

移动终端地图服务的前景主要分为两个方面:一方面,移动设备上安装的地图会给使用者提供更加智能的服务,由智能手机系统Android所带来的一系列变化使得手机地图也向着更加智能的方向发展,为用户提供一体化的生活服务,给人民的生活也带来帮助,能够帮助人们查询行车的路线,也能够帮助人们预订旅游过程中需要住宿的酒店,还能够在娱乐活动场所等方面给人们提供全方位的服务,这应该归功于移动互联网和手机终端的飞速发展;另一方面,对于开发者来说,手机地图开放平台可以根据用户需求的不同来为其提供独家的服务,这样不但方便了软件开发人员的工作,而且也能够使开发出的产品更有针对性和用武之地,这对开发人员来说,能够大大方便他们的开发过程。手机的应用在当下已经成为主战场,原来只能在电脑上运行的大部分应用现在都可以在手机上运用,使得人们的出行更加方便,可以通过手机随时寻找自己想要的资料。

1  基于Android的旅游地图小帮手设计

基于Android的旅游地图小帮手结构采用分层次设计,不但有UI层,还要有完成控制功能的控制层、完成前台请求的逻辑层和存储数据的数据层。

软件架构如图1所示。

UI:就是使用者与应用直接交互的那一层,UI获取到用户的意图发送给后台处理,后台对用户意图进行处理之后再把得出的结果传递给UI层,UI加载布局文件显示给用户浏览。本款地图服务应用的基础就是UI层,UI主要是XML文件编写的任务。

控制层:接收到UI层用户的意图后,接收数据并且传递给处理函数,处理函数经过一系列的传递处理后,返回结果给UI,用户就得到了需要的信息。

逻辑层:用于处理一些前台请求,例如搜索、定位、分享、获取全景图等。

数据层:由于都是通过网络获取到的数据,因此没有数据库的设计,数据都是通过百度地图API的接口获取到的云端数据,包括检索得到的数据也都是通过百度API接口实现的,虽然数据不需要自己管理,但是数据的流向却必须通过接口来传递。

基于Android的旅游地图小帮手的功能结构如图2所示,该图展示了系统所有功能,包括各功能之间的关系。

2  基于Android的旅游地图小帮手核心功能

2.1  地图图层

百度地图API提供好几种地图,有普通地图(2D/3D)、卫星地图、实时交通图、热力图等,由于本应用采用版本较低的v2_4_0版本,所以只实现了普通地图、卫星地图、交通图三个基本的地图,本节主要是介绍不同地图间的转换。

首先是地圖图层显示的设计,先创建两个数组:图层图片iconsfortucen、图层文字说明lever,在定义图层时,由于需要在主界面上加载出其他的界面,需要用到inflate这个方法,然后利用适配器将定义的两个数组添加到该界面。

(1)使用inflate()找出布局;

(2)通过findViewById()找到控件将gridview添加到gv_tucen中;

(3)setAdapter()将预先定义好的适配器内容添加到gv_tuen;

gv_tuen是嵌入到viewforlever视图中的布局,通过以上三个步骤就可以将地图图层选择的界面加载到主界面中,其中显示出来的方法为initPop_tucen_Window();

然后是点击事件的实现,使用onItemClick()方法根据用户点击的不同显示不同类型的地图,所以此处使用switch来进行实现:

(1)case0:设置为卫星图显示,使用setSatelite(true)进行设置,然后将地图刷新,具体为mapview.refresh();

(2)Case1:设置为普通地图显示,使用setSatelite(false)进行设置,这是因为地图控件初始默认为普通交通图,只需要把卫星地图关闭就可以设置为普通地图状态,然后刷新地图就可以切换至普通地图;

(3)Case2:设置视角浏览地图,这里与前面两个的设置不一样,这里通过地图控制器设置俯视的视角,通过if判断是否已经设置为俯视,如果没设置为俯视就通过  MapControl.setOverlooking()来设置为俯视,最后刷新地图,需要注意的是这里要设置overlook这个布尔型变量来判断是否设置了俯视图。

2.2  附近图层

附近图层实现:点击附近能够弹出一个选择界面,选择搜索附近的宾馆、酒店等,搜索后在地图上会有红色标记物,点击这些标记物会有相应的名称出现,所以本功能块主要分两个过程来实现:弹出附近界面;处理相应的搜索并显示出来。

首先通过findViewById找到附近按钮,对其注册点击事件setOnClickListener(),在注册事件中,initPop_fujin_Window()用于加载附近界面,调用showAtLocation()方法显示在屏幕中心。

initPop_fujin_Window()的实现:通过创建一个Popup Window窗口,显示viewforfujin,当然这个窗口必须进行相关的设置,例如可以在窗口外点击屏幕、隐藏窗口,设置位置中心等。viewforfujin的实现与viewforlever类似,都是利用适配器将有关的显示内容加载到gridview gv_fujin中,然后将gv_fujin加载到显示窗口中显示出来。

附近的显示列表中有很多内容,为此创建了一个图标数组以及相应的文字说明数组,图标与文字叠加在一起组成一个元素放置在gridview中,以此类推,组成的元素有:KTV、宾馆、美食、加油站、超市、公司、景点、快餐、酒店、洗浴、取款机、银行等。

经过以上的步骤基本实现了附近窗口的设计以及在主界面中的弹出显示,附近窗口实现的效果如图3所示。

2.3  地图显示

地图显示为用户提供一个地图界面,在显示时通过定位功能来加载用户当前位置,地图显示不光在主界面需要用到,在其他很多的功能中也有非常多的应用,比如说在离线地图中,如果要显示已经下载的地图离线包,就需要用到地图显示功能;在全景图中,当进行POI(Point of Interest)检索时也需要用地图来显示搜索到的结果,从而获取全景图。用户不只能够浏览地图,还能够对地图进行缩放控制、移动控制等。此外,用户还可以浏览实时交通图查看实时路况,也能从平面地图切换成卫星图,视角可以切换到俯视。

2.4  路线规划

输入起始点地址和终点地址,当启用步行或者驾车搜索时,会得到一段路线规划内容,通过列表形式列举出每一段路程的信息,用户通过这段路径信息列表能够非常清楚地知道下一步应该怎么行进。在这里,由于城市内步行与驾车使用的路线基本上一致,所以将步行和驾车路线规划放到一起,这样不只减少了代码冗余而且减少了开发的工作量,同样的原理,公交路线也是这样获取的,只是内容以及获取接口不一样。路线规划是主界面搜索按钮的跳转界面,路线规划界面提供了三种搜索入口,即通过“步行搜索”搜索步行的路线内容、通过“驾车搜索”搜索驾车路线内容、通过“公交搜索”搜索所有公交路线,除此之外还提供了地点搜索,可以通过搜索地点来显示地图。路线选择是公交路线搜索按钮的调转界面,系统为用户提供公交路线时,只需要点击列表中的相应公交内容就可以查看公交详情。路线详情应与路线选择共用一个界面,当发出步行路线搜索、驾车路线搜索、点开某个公交路线时出现路线详情。

2.5  分享功能

分享功能需要将通过MKSearchListener监听器得到的定位数据通过系统发送出去,达到分享的目的。所以该功能没有额外使用别的类实现,直接在主界面定义该按钮的点击事件,通过MKSearch对象得到定位数据。

当使用者按下分享按钮时,share_btn()函数执行,该函数首先利用requestLocation()函数,运用该函数是为了获取到当前位置的信息,并且得到当前位置的地理位置经纬度信息pt,requestLocation()能够启用LocClient对象的requestLocation()方法,该方法能够引起BDLocation-ListenerImpl监听器onReceiveLocation方法的回调,回调的结果就是位置经纬度pt1,该经纬度信息对于后面非常重要,因为要分享的结果就是通过这个pt1这个变量解析出来的。

通过定位函数将经纬度信息pt1获取到了之后,调用百度地图API search包中MKsearch类的reverseGeocode方法获取地址信息,该方法中的一个参数就是以地理坐标点为参数,这里传递的形参是requestLocation()方法处理得到的pt1坐标点。

reverseGeocode()方法是一个根据地理坐标点获取地理信息的异步函数,返回结果在MKSearchListener里onGetAddrResult()方法通知,在该方法获取该地址信息后,赋给变量currentAddr。

接着利用poiRGCShareURLSearch()方法得到地址信息共享URL,将其命名为“分享地址”。得到了分享URL后,結果回调给onGetShareUrlResult函数,该函数中创建了一个发送的意图,将发送的内容设置为前面得到的地址信息+URL分享地址,格式为:"您的朋友通过生活小地图与您分享一个位置:"+currentAddr+"/"+result.url,设置的函数为intent.putExtra。最后将已经打包好的intent发送内容通过createChooser方法调用本地应用发送地址给其他人,分享地址。

3  结  论

手机的应用在当下已经成为主战场,原来在电脑上的大部分应用现在都可以在手机上完成,使得人们的出行更加方便,可以通过它去找自己想要的资料。本文开发的基于Android的旅游地图小帮手使用百度地图SDK,实现定位、导航、路线、全景等地图功能,具有较强的实用价值。

参考文献:

[1] 施连敏,盖之华.基于Android的百度地图应用的搭建 [J].技术与市场,2014,21(12):34-35+38.

[2] 张国平,王建玺,董桂林.基于Android平台的手机地图服务设计 [J].计算技术与自动化,2015,34(1):111-115.

[3] 柳婷.基于Android手机地图服务系统的设计与实现 [D].北京:北京邮电大学,2013.

[4] 周颖颖.基于Android平台的手机地图系统的实现 [J].现代计算机(专业版),2013(22):74-76.

[5] Google.Android developers. [EB/OL].http://developer.android.com/guide/components/fundame ntals.html.2014.

作者简介:刘萍(1981-),女,汉族,江西高安人,讲师,本科,主要研究方向:计算机应用;章胜江(1977-),男,汉族,安徽东至人,副教授,硕士,主要研究方向:信息技术管理。

猜你喜欢

软件开发
信息安全环境下的计算机软件开发研究
核电厂定期试验管理软件开发
FPGA软件开发过程中编码规范的作用