版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、论文题目 基于 Android 的驴友导航系统设计与实现专业年级学号姓名指导老师目录1绪论 . 11.1课题背景 . 11.2课题内容 . 11.3课题目的及其意义 . 22系统开发环境及相关技术 . 22.1 Android 开发介绍与环境搭建 . 22.2 JSON简介. 32.3 Struts2框架简介与环境搭建 . 32.4 Baidu Maps API简介 . 43系统分析 . 43.1研究目标 . 43.2需求分析 . 43.3性能分析 . 54系统设计 . 54.1用户界面设计 . 54.2数据库设计 . 64.3程序模块设计 . 85系统功能模块设计 . 95.1文件结构与用途
2、 . 95.2后台定位服务 . 105.3 MapApplication.java 类 . 125.4登录模块 . 145.5首页模块 . 155.6导航模块 . 195.7周边信息查询模块 . 205.8个人资料模块 . 226系统测试 . 247总结 . 25参考文献 . 26致 谢 . 27II基于 Android 的驴友导航系统设计与实现基于 Android 的智能导游系统的设计与实现摘 要: 本文首先分析讨论 Android 手机软件开发主要技术,以及国内景区导游 系统与智能导游的现状。 然后讲述了基于百度地图 Android SDK 以及定位 SDK 技 术所设计的 Android
3、 平台智能导游系统的实现。该系统设计实现了后台定位、景 点导航、景点信息浏览与下载、周边查询等实用功能,具有良好的通用性与灵活 性。关键字: Android ;智能导游;导航软件;移动开发;百度地图1 绪论1.1课题背景中国工业和信息部最新公布数据表明,中国智能手机的市场增长率不断攀 升,而且,随着移动 3G和Wifi 热点的不断覆盖, 用户对手机的互动娱乐体验也 提出了更高要求,各种应用软件开始进入,手机日渐成为互动娱乐的焦点。有关资料显示,我国的旅游业发展实力巨大。首先,是旅游收入增长迅速: 2013年春节黄金周全国接待游客达到 2.03 亿人次,实现旅游收入 1170.6亿元人 民币,同
4、比增长达到 15.1%和 15.4%1;其次,固定资产投入力度的不断加大: 2009 年 12 月,关于加快发展旅游业意见首次提出“中国旅游日”的概念, 旅游业已经出现在了中国国家战略性产业中。然而,国内旅游业的迅猛发展使得传统的人工导游方式不能满足新时代用户 的多元化需求。 长期以来, 游客在景点旅游时只能走马观花,对景点的多媒体信 息了解甚少, 就本人经验来说, 对于外来游客来说更会由于语言的障碍而使得游 览质量下降!于是,基于上述,手机终端的智能导游应用便应运而生。1.2课题内容本课题结合现代景区的相关特性和用户需求,使用 JAVA 语言,应用百度地 图、百度定位( GPS+基站)、JS
5、ON 数据交换和无线通讯等技术,开发一个基于 Android 的 C/S 式智能导航软件系统。这软件使得用户可以利用无线网络以及手机的便捷性无时无刻地享受到景点信息查询、自身位置查询、 周边查询、导航等 功能所带来的畅快旅游体验。1.3课题目的及其意义本课题的主要目的是将 Javaweb后台服务端、 百度地图、 定位导航技术与景 区导游相结合, 从而实现景区导游系统的真正智能化。 智能导游系统可以储存大 量的景区景点信息,不仅可以广泛传播,而且科学环保、方便快捷。此外,系统 还提供了自定位、 导航的实用功能, 让用户可以彻底抛弃纸质地图,减少路痴的 认路障碍。这不仅能直接为游客带来更畅快的旅游
6、体验, 同时还完善了景区的旅 游管理体制。2 系统开发环境及相关技术2.1 Android 开发介绍与环境搭建Android 是 Google 公司开发的基于 Linux 内核的开源操作系统。 它包括:操 作系统、用户界面和应用程序, 而且不存在任何以往阻碍移动产业创新的专有权 障碍2。Android 系统提供了四大基本组件, 包括:Activity 、Contentprovide、Service、 Intentreceiver,每个组件都是一个视图 (view )。但上述四大组件对于一个 Android 应用程序来说,却并不是必须的,可能只需要其中的几种酒可以满足设计需求。 Manifext
7、.xml 配置文件时 Android 应用程序不可或缺的一个 XML 配置文件,其 中定义了程序所用到的组件、组件功能以及一些必要条件和权限。Android 的上层应用程序一般是由 java 语言开发,所以首先应该有由 SUN 公司提供的 Java SDK(其中包括 JRE:Java Runtime Environment)以及 Java主流集 成开发环境 Eclipse IDE。此外,还需要 Android 开发专用 Google 提供的 Android SDK 和安装在 Eclipse的插件 Android ADT,为 Android 开发提供开发工具的升 级或者变更,是 Eclipse
8、下开发工具的升级下载的工具 3 。Android 开发平台搭建步骤 4 :(1)首先到 /downloads/下载 Eclipse 集成开发环境并且解 压,这里推荐下载 Java EE 集成版本,可以为平台的搭建省下不少工作。 接着再 去 http:/ 站点下载 SDK 后安装,下载 http:/ SDK1.5 后解基于 Android 的驴友导航系统设计与实现压。(2)双击 Eclipse解压后目录中的 eclipse.exe然后启动,选择 Eclipse 菜单中的 Help- Install New Software- 选项卡上的 Availabl
9、e Software,点击右侧的 “Add ” 输入 http:/dl- with ”下拉菜单 中选择刚才输入的网址。 过一会就会出现一个 Developer Tools选项,勾上以后点 击 Next 以后 Eclipse 会自动网上查找 Android 开发工具插件,然后找到 Android DDMS 和 Android Development Tools,选中这两个点击 Finish,Eclipse 就会自动 下载并安装 Android 插件了,最后会提示重启 Eclipse。(3)重启后选择 Eclipse菜单中的 Windows- Preferences 在左侧的 Android 项
10、目中 SDK Location 中填入 Android SDK 解压后的目录,然后点击 Apply 。(4)在 Windows7 的系统变量中的 path 变量中添加一个值,该值指向解压后 的 Android SDK 目录下的 tools 文件夹。2.2 JSON 简介JSON(javaScript Object Notation)是一种轻量级的数据交换格式,它基于 javascript却采用了完全独立于语言的文本格式。 JSON基于“名称 /值”对的集合 和值的有效序列表这两种格式, 用 JSON 表示一组值时不但可以减少复杂性也能 提高可读性,是网络编程中数据交换的常用格式。2.3 Str
11、uts2 框架简介与环境搭建Struts是采用 Java Servlet/JavaServer Page技s 术,开发 Web应用程序的开放 源码的 Framework。采用 Struts 能开发出基于 MVC(Model-View-Controller) 设计 模式的应用构架。而 Struts2是在原有 Struts和 Webwork 的技术基础上进行合并 的全新的框架,其体系结构而原有 Strcts 差异巨大。 Structs2 是以 Webwork 为核 心,采用拦截器机制来处理用户请求, 这样的设计也使得业务逻辑能够与 Servlet API 完全分离,使应用结构更为合理。Struts
12、2 框架的开发需要使用 Myeclipse 集成开发环境。由于 Myeclipse 是 Eclipse的一个插件,所以在这忽略 Eclipse 的安装。Myeclipse的安装:首先应该到 http:/ name =Downloads&req=viewsdownload&sid=15 下载文件 MyEclipse_5.5.1GA_E3.2.2_ FullStackInstaller.exe并安装。安装完毕后将其安装目录下的 feature 和 plugin 两 个目录覆盖到 Eclipse 的安装目录下,最后卸载刚才安装的 Myeclipse5 。Tomcat 应用服务器的安装:首先,到 ht
13、tp:/ 选择与自己 JDK 匹配的 Tomcat 安装文件,在安装时选择路径把路径选到 JDK 的安装路径下的 jre。最后配置环境变量:在“我的电脑 ”上点右键 “属性”“高 级” “环境变量 (N)”。 新建系统 变量 CATALINA_HOME : C:Program FilesApache Software FoundationTomcat 5.5我( 的 tomcat 安装目录 ,你写你自己的 ) 在系统变 CLASSPATH 的值的后面加入:%CATALINA_HOME%commonlib; 在 系 统 变 量 Path 的 值 中 %JAVA_HOME%bin; 的 后 面 加
14、 入 以 下 内 容:%CATALINA_HOME%bin; 到这里, Tomcat安装完毕 6 。Structs2 框架的搭建,包括以下步骤:首先创建 web 项目并导入 Structs2 所 需要的包 struts2 core-.jar、xwork-core-.jar、commonsfileupload-1.2.1.jar comm.ons-io-1. 3.2.jar、freemarker-2.3.16.jar、ognl-3.0.jar、javassist-3.7.ga.jar; 配置 Structs在当前 web项目中,在 web.xml 中配置 Struts
15、2 所需的核心过滤器。2.4 Baidu Maps API 简介百度地图 API 是为开发者免费提供的一套基于百度地图服务的应用接口, 包 括JavaScript API、Web服务 API、Android SDK 、iOS SDK、定位 SDK、车联网 API、LBS 云等多种开发工具与服务,提供基本地图展现、搜索、定位、逆 /地理 编码、路线规划、 LBS 云存储与检索等功能,适用于 PC 端、移动端、服务器等 多种设备,多操作系统下的地图应用开发 7。3 系统分析3.1研究目标(1)学习熟悉 Android 应用程序的框架、开发过程;(2)学习熟悉 Struts2 框架、开发过程;(3)
16、基于 Android 的智能导游软件主要实现 Android 系统访问服务端,利用 基于 JAVA 的网络编程( Apache HttpClient 项目)与 Webservice调用,针对手机 所在的地理位置,实时查询相关景点的基本信息与天气信息,并智能导航;(3) 学习熟悉基于 Android 的地图 GIS 开发。3.2需求分析本软件是一个基于 Android 的智能导游系统, 故使用者应该为成分构成比较 广泛的游客,所以 UI 必须简洁大方,有显浅易懂。而要实现智能导游,首先就基于 Android 的驴友导航系统设计与实现必须要求软件起码如人工导游般, 能够为用户提供景点的基本信息讲解
17、、 位置描 述、导航等服务考虑到景区信息与用户信息等的数据量可能十分巨大, 本系统应 该使用本地 / 服务器模式以节省用户的移动设备储存空间以及数据流量。综上所 述,本系统应该完成以下功能:(1)采用 C/S 模式,基于 Struts2 框架服务端储存用户信息以及显示地图所必 须的静态信息,供 Android 客户端的查询浏览与下载;(2)用户信息管理,包括:登录与注册、本地景点信息的管理;(3)以城市为基本的景点信息查询与模糊查询,包括:名称、地址、图片、 经纬度、票价及其优惠活动等,并提供景点信息的本地缓存、下载;(4)用户自定位,景点位置的地图显示与导航;(5)周边餐饮、卫生间、住宿、医
18、院、加油站等信息的查询。3.3性能分析本项目的目标是提升游客的旅游体验, 所以对程序的性能要求较高, 程序应 该具有以下的良好性能:(1)响应速度快。(2)安全性高(3)信息处理速度快4 系统设计4.1用户界面设计根据设计,本软件系统有以下几个界面:登录界面、景点查询综合界面、景 点信息显示界面、景点信息本地收藏界面、周边查询界面、景点导航界面。景点查询综合界面是软件的首页, 其主体是百度地图。 它能根据当前城市(自 选或定位默认)或模糊查询用百度地图显示出景点的分布情况。景点信息显示界面为用户显示当前景点的详细情况,包括:名称、地址、电 话、门票、优惠、简介、图片等资料, 并能根据用户意愿选
19、择下载当前景点信息。景点信息本地收藏界面, 其主体是一个 ListView 。它能够显示出用户的本地 景点信息,并实现管理(删除) 。周边查询界面, 其主体是一个百度地图。 用户可以通过它来查询到周边诸如 餐饮、酒店、加油站等信息。首页城市搜景点景点信息景点简介我的收藏景点导航界面,其主体是一个百度地图。它可以为用户进行实时导航服务根据对用户界面显示内容的分析,绘制出用户界面的草图,如图4-1、4-2所示。4.2数据库设计本软件中有一下数据需要存储:用户信息、景点信息、景点信息收藏、全国 城市名称。考虑到用户信息与景点信息的庞大数据量, 本系统将其存储在服务器基于 Android 的驴友导航系
20、统设计与实现端的 MySQL 数据库,需要时再请求;城市名称数据量较少,为减少用户数据流 量,将其存储在手机的 SQLite 数据库中;而景点信息收藏则存放于 SD 卡的文 件中,综上所述,本系统数据库设计如下:在服务端的 MySQL 数据库中建立新数据库 maps_traverse,并建立新表,包 括用户信息表 gpsuser和景点信息表 spot。如表 4-1 和表 4-2 所示。表 4-1 用户信息表 gpsuser 的结构属性数据类型说明idInt(11)自动增加的主键usernamevarchar(50)用户名passwordvarchar(50)密码Emailvarchar(50)
21、电子邮箱地址registertimevarchar(50)注册时间powerlimitsvarchar(50)权限statevarchar(50)用户登录状态表 4-2 景点信息表 spot 的结构属性数据类型说明idInt(11)自动增加的主键namevarchar(45)景点名称addressvarchar(45)地址phonevarchar(45)咨询电话imageurlvarchar(45)图片路径IntroductionTEXT简介LatDOUBLE经度LngDOUBLE纬度FaresFLOAT门票价cityvarchar(45)所在城市编号btimeTIME始开放时间ntimeTI
22、ME终开放时间Favourableinfovarchar(45)优惠信息由于全国城市的分布是相对固定的, 为了减少操作的麻烦, 本软件直接将整 个城市数据库 city.s3db 导入到 Android 项目的 res/raw 目录中,直接使用。其中 包括省表 province,城市表 city。如表 4-3 和表 4-4 所示。表 4-3 省表 province 的结构属性数据类型说明idinteger自动增加的主键7code namevarchar(6)varchar(60)省编号 省名表 4-2 城市表 city 的结构属性数据类型说明idInteger自动增加的主键codevarchar
23、(6)城市编号namevarchar(60)城市名pcodevarchar(6)城市所在省编号从设计思路上考虑, 储存在手机本地的景点信息收藏数据包括 JSON 文本和 JPG格式的图片,将其直接写入 SD 卡目录以指定规则命名的目录,此方案可以 简化对其的读写操作。4.3程序模块设计从功能需求上分析,整个软件应划分为首页、个人资料、导航、周边查询, 四个模块。首页负责景点信息的各类查询、城市的切换、定位,是整个软件的核心;个 人资料模块负责管理用户的信息以及本地景点数据;导航负责对用户进行景点、 指定位置的目的地导航; 周边查询负责为用户提供周边信息的查询。 系统模块功 能图如图 4-2。基
24、于 Android 的驴友导航系统设计与实现图 4-2 系统模块功能图5 系统功能模块设计5.1 文件结构与用途在程序开发阶段,首先确定“基于 Android 的智能导游系统”的工程名为 guidemap。工程源代码的结构如图 5-1 所示。为了使源代码文件的结构更加清晰, guidemap 工程设置了多个命名空间, 分别用来保存用户界面、 数据库、 后台服务和工具实体的源代码文件,源代码文 件的名称以及说明如表 5-1 所示。图 5-1 guidemap 工程的源代码文件 表 5-1 guidemap 工程的文件用途说明包名称文件名说明com.guidemap.adapterMyAdapte
25、r.java资源适配器monConstants.java公共工具类com.guidemap.controlImageLoader.java远程图片加载类com.guidemap.controlMapApplication.javaApplicationcom.guidemap.controlMyOverLay.java景点覆盖层类com.guidemap.controlOverItemT.java定位覆盖层类monUrler.javaurl 公共类9com.guidemap.dbDAO.java城市信息数据库操作com.guidemap.dbDBManager.javaSQLite 管理类co
26、m.guidemap.entityMyListItem.java地图 Item 实体类com.guidemap.entityPosition.java景点位置实体类com.guidemap.entitySpot.java景点信息实体类com.guidemap.entityUser.java用户信息实体类com.guidemap.serviceGetLocationService.java后台定位 service 类com.guidemap.viewCityActivity.java城市切换选择com.guidemap.viewGuideActivity.java导航com.guidemap.v
27、iewMainActivity.java主框架com.guidemap.viewMapsActivity.java首页com.guidemap.viewSearchActivity.java周边查询com.guidemap.viewSpotActivity.java景点信息查询Android 的资源文件保存在 /res 的子目录中。 /res/drawable/目录中保存的是图 像文件, /res/values 目录中保存的是用来自定义字符串和选项列表的文件;/res/layout目录中保存的是布局 XML 文件; /res/raw 保存的是城市信息数据库文 件;而/res/anim 保存的是
28、动画效果文件。 所有在程序开发阶段可以被调用的资源 都保存在这些目录中 AndroidManifest.xml 文件主要是 Activity 、Service 类的注册 和相关权限的许可设置。5.2后台定位服务GetLocationService.java 类的后台定位服务是整个软件的基础,它绑定在软 件的 Application ,从软件运行开始,贯穿整个软件生命周期的始末。其主要功能 是不断为系统提供实时的所在经纬度以及所在城市,并存放到公共类 Constants 的 City 变量。考虑到本应用的用户对象主要为国内用户,在地图方案上采用了由百度公司 开发的免费地图 Baidu Maps
29、API 。而定位方案采用了 Baidu Location API ,通过 调用此 API 来实时获取当前位置坐标将其存入 Binder 类中,而当前城市信息的 获取通过百度地图 SDK 中 MKSearch 来获取。此模块的实现流程图如图 5-2 所示。其核心代码如下。MapApplication app = (MapApplication)this .getApplication();if ( app. bMap = null )app. bMap = new BMapManager(getApplication();app. bMap.init( app. MAP_KEY, newMapA
30、pplication.MyGeneralListener();10基于 Android 的驴友导航系统设计与实现图 5-2 后台定位服务模块功能流程图app. bMap.start();final MKSearch mMKSearch = new MKSearch(); mMKSearch.init( app. bMap, new GeoCoderParser();Log. d( service map , started ); mLocationListener = new LocationListener() Override public void onLocationChanged(L
31、ocation location) /Log.d(TAG, location change);if (location != null )String strLog = String. format ( 经度 :%frn + 纬度:%flocation.getLongitude(),location.getLatitude();pt = new GeoPoint( int )(location.getLatitude() * 1E6), ( int )(location.getLongitude() * 1E6); mMKSearch.reverseGeocode( pt );11 app .
32、setPt( pt );elseLog. v( Service , getLocation error! );MKSearch 的查询结果在 GeoCoderParse.onGetResult 方法中给出。public void onGetAddrResult(MKAddrInfo arg0, int arg1) if (arg1 != 0)String str = String.format ( %d , arg1);Log. d( TAG, str);return ;MKGeocoderAddressComponent address = arg0. addressComponents ;
33、Constants. CITY =address. city ;Log.d( TAG,Location info:+ vince +address.city +address.district+address. street+address.streetNumber5.3 MapApplication.java 类该类是整个软件的基石,它绑定了后台定位服务,初始化了百度地图SDK ,诸如:BMapManager、MKSearch、MKSearchListener 等公共类,避免了各 Activity 之间的冲突与提高了系统的流畅性, 它还定义了软件的公共变量。 综上,系统
34、可 以通过它来控制着整个软件的行为。其核心代码如下。首先,应该在 androidmanifest.xml 文件中声明。 绑定后台服务以及初始化百度地图。MapApplication mApp=this ; bMap=new BMapManager( mApp); boolean is= bMap .init( MAP_KEY, new MyGeneralListener();12基于 Android 的驴友导航系统设计与实现if (is)/ 设置定位监听时间间隔bMap.getLocationManager().setNotifyInternal(5, 2);bMap.getLocationM
35、anager().enableProvider(MKLocationManager. MK_NETWORK_PROVIDE)R;bMap.getLocationManager().enableProvider(MKLocationManager. MK_GPS_PROVIDER);elseToast. makeText ( this , 地图 DSK启动失败 ,Toast. LENGTH_LONG).show();final Intent intent= new Intent();intent.setAction( com.guidemap.ss ); bindService(intent,
36、scon , Service. BIND_AUTO_CREATE);其中,MyGeneralListener()类的作用在于在初始化百度地图 SDK时检测错误的发生,并为用户提供提醒服务。用于为用户提供导航、周边信息搜索的 MKSearch 关键代码如下(由于篇幅 问题,此处只写出了代码框架,具体流程在导航、周边信息查询模块处给出)。 MKSearch mKSearch= new MKSearch();mKSearch.init(app. bMap, new MKSearchListener() Overridepublic void onGetWalkingRouteResult(MKWal
37、kingRouteResultarg0, int arg1) Overridepublic void onGetTransitRouteResult(MKTransitRouteResultarg0, int arg1) Overridepublic void onGetSuggestionResult(MKSuggestionResult arg0,int arg1)Overridepublic void onGetRGCShareUrlResult(String arg0, int arg1)Overridepublic void onGetPoiResult(MKPoiResult ar
38、g0, int arg1, int arg2)13Overridepublic void onGetPoiDetailSearchResult( int arg0, int arg1) Overridepublic void onGetDrivingRouteResult(MKDrivingRouteResultarg0, int arg1) Overridepublic void onGetBusDetailResult(MKBusLineResult arg0,intarg1)Overridepublic void onGetAddrResult(MKAddrInfo arg0, int
39、arg1) );5.4登录模块登录模块是整个系统的门户, 在现实中它的功能是否健全关系到整个系统给 用户的第一印象。 在这个系统中, 登录模块主要为用户提供账号登录与注册,记住最后一次账号与密码,对系统进行 GPS、WIFI 等状态的检测,以及系统权限 等功能。其界面图如图 5-3 所示。图 5-3 登录界面图当用户打开系统, 首先便进入这个登录界面。 假如用户上一次成功登录并勾选记住密码, 则系统会自动为用户填上上一次登录所用账号密码。 与此同时,该模块后台会自动检测当前手机的 GPS、WIFI 网络状态,因为系统所实现的功能14基于 Android 的驴友导航系统设计与实现是基于上述两种功
40、能的, 假如检测到上述状态为关闭时会提示打开。 当用户输入 正确账号信息时, 系统便会跳转至系统主界面。 在注册功能中,用户可以填写账 号、密码、 E-mail 等信息,注册成功的条件是输入的账号不重复,各类输入格式正确。 其中,登录的功能流程图如图 5-4 所示。图 5-4 登录功能流程图5.5首页模块由上述可知, 首页模块是软件功能的核心, 正是它奠定了软件的属性:智能15导游。它由两个核心界面构成:主界面、景点信息界面其对应的界面图如图 5-5 所示。图 5-5 首页界面图首先,用户一旦登录成功后, 系统就会根据定位信息向服务端的 MySQL数据 库请求当地的景点数据,并将其显示在地图上
41、。此后,用户可以根据需要,使用 以下功能:(1)、模糊搜索,在输入框中输入用户需要了解的景点名称,系统就 会将其单独显示出来然后将其置于地图中心; ( 2)、切换城市,系统默认城市是 用户当前所在城市,如果需要,用户可以实时切换城市以了解更多景点; ( 3)、 查询、下载景点详细信息。其模块功能流程图如图 5-6 所示。为了更好地处理想 Web站点请求,包括处理 Session 、 Cookie 等细节问题, Apache开源组织提供了一个 HttpClient 项目,作为一个简单的 Http 客户端(而 不是浏览器)。它可以用于发送 HTTP请求,接受 HTTP响应 8。由于本系统需要 从服
42、务端远程获取景点信息,我采用这个 Apache HttpClient ,数据格式采用 JSON,从服务端获取信息的核心方法如下。public static String doGet(String url,Context context)/ 判断网络if ( checkNetwork (context)= false )return null ; elseHttpGet httpget =new HttpGet(url);16new BasicHttpParams();基于 Android 的驴友导航系统设计与实现BasicHttpParams httpParams =HttpConnectio
43、nParams. setConnectionTimeout (httpParams, 5000);HttpConnectionParams. setSoTimeout (httpParams, 5000); HttpClient httpcliend= newDefaultHttpClient(httpParams);String result= new String();try HttpResponse httpresponse=httpcliend.execute(httpget);HttpEntity httpentity= httpresponse.getEntity();InputS
44、tream inputstream= httpentity.getContent();BufferedReader buff= new BufferedReader( newInputStreamReader(inputstream);17图 5-6 景点信息标注功能流程图+Strinint )(优惠String line= new String();while (line=buff.readLine()!= null ) result=result+line;/System.out.println(result); catch (Exception e) / TODO Auto-genera
45、ted catch block e.printStackTrace();result= null ;return result; 根据信息将景点标注: public OverItemT(Drawable marker, MapsActivity context, ArrayList slist) super ( boundCenterBottom (marker);/ TODO Auto-generated constructor stubthis . marker =marker;this . slist =slist;this . ma=context;/ 根据gplist 来制作 Ove
46、rlayItemList lgp= new ArrayList();OverlayItem ot;for (Spot spot:slist)Log. e( getLayer ,String. valueOf (spot.getPoi().getLat()+ +g. valueOf (spot.getPoi().getLng();lgp.add( newGeoPoint( int )(spot.getPoi().getLat()*1e6),( (spot.getPoi().getLng()*1e6);for ( int i=0;ilgp.size();i+)GeoPoint gp=(GeoPoi
47、nt)lgp.get(i);if ( null .equals(slist.get(i).getFavourableinfo()ot= newOverlayItem(gp,slist.get(i).getName()+18gpoi基于 Android 的驴友导航系统设计与实现景点), gpoint +i);elseot= newOverlayItem(gp,slist.get(i).getName(),nt +i);if (i=0)setFirstSpot(gp);mGeoList .add(ot);populate(); / 更新5.6导航模块导航模块,顾名思义,它的设计目标是为游客提供景点
48、的导航服务,它弥补了人工导游难以随时为旅游指路的缺点, 丰富了导游的服务, 让游客可以更加方 便地在旅游区浏览。导航模块界面如图 5-7 所示。图 5-7 导航模块界面图 此模块设计了两种功能:任意地点的导航和指定景点的导航。而每种导航功 能可以为旅游查询出三种路径:公交车、自驾、步行。在导航方案的选择上,本 模块采用了基于 Baidu Maps API 的 MKSearch 与 MKSearchListener。当用户将搜 索条件输入系统时,系统即 调用 MKSearch 中的 TransitSearch(String city,MKplanNode start, MKplanNode en
49、d) 或 WalkingSearch(String startC ity,MK19planNode start, String endCity,MKplanNode end)发起搜索,得到信息后为用户在地 图显示出路径。导航模块功能流程图如图 5-8 所示。图 5-8 导航模块功能流程图5.7周边信息查询模块周边信息查询模块为用户提供了对某城市一定范围内的诸如餐饮、卫生间、 加油站、酒店等丰富信息等关键词的查询。周边信息查询模块界面如图 5-9 所示。根据设计,用户可以指定搜索中心点(定位或自定义) 、范围、搜索的 Point 类型,例如:肇庆学院图书馆、范围 1000m、类型酒店,系统即可为
50、用户查询到 在肇庆学院图书馆周边 1000m 范围内的酒店。如导航模块一般,采用了基于 Baidu Maps API 的 MKSearch 与 MKSearchListene。r 当用户将搜索条件输入系统时,系统即调用 MKSearch中的20基于 Android 的驴友导航系统设计与实现poiSearchNearby(String key,GeoPoint ptLB,int radius),方法发起周边 Point 搜索。图 5-9 周边信息查询模块界面图 周边信息查询模块功能流程图如图 5-10 所示。图 5-10 周边信息查询模块功能流程图215.8个人资料模块个人资料管理模块为用户提供
51、了个人信息查询更新、 个人景点收藏的查询与管理功能,其主要布局界面有两个,如图 5-11 所示图 5-11 个人资料模块界面图 当用户选中“我的”选项卡后,进入此模块主界面。用户可以在此模块查 看的个人账号信息,包括账号、邮箱、注册时间、账号权限,并可以根据需要进 行包括账号名、 邮箱、密码在内的信息修改, 而在我的收藏方面, 界面以 Listview 方式罗列了用户收藏在本地的景点信息, 可以让用户得以查看自己收藏到本地的 景点信息,同时也可以通过特定手势对其进行删除操作。模块主界面的个人资料信息刷新、信息获取与更新等由一个后台核心线程 进行维护。个人资料管理线程功能流程图如图 5-12 所
52、示。在个人收藏功能方面,景点信息在首页模块中下载,以 JSON 格式的 TXT 文件方式储存在手机 SD卡中以项目名命名目录下, 文件夹则以景点的 ID 命名。 在查看时,该模块会根据景点 ID 搜索到指定目录的 TXT 文件,并加以解析,然 后以 LisView 方式将其可视化。此时,用户则可以根据需要,按照指定手势对信 息进行查询、删除。例如,在 ListView 的 Item 中滑动手势,将每个 Item 的删除 按钮可视化,按下即可实现对信息的删除。个人收藏功能流程图如图 5-13 所示。22基于 Android 的驴友导航系统设计与实现图 5-12 个人资料管理线程流程图23图 5-13 景点收藏功能流程图6 系统测试至此,已经完成了 guidemap 工程的代码编写工作,这一节将对代码进行软 件测试。考虑到 Android 虚拟机效率比较低,所以本系统的测试操作将使用真机 测试,并用豌豆荚手机截图功能将结果截图,测试机型为魅族 MX 。在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 测量大树生成课程设计
- 仲恺农业工程学院《建筑环境学》2022-2023学年第一学期期末试卷
- 仲恺农业工程学院《环境生态学》2022-2023学年第一学期期末试卷
- 测井市场改造方案
- 沧州硅pu球场施工方案
- 残疾人语言康复课程设计
- 棒磨机检修施工方案
- 昌平地坪防腐施工方案
- 安防设施路障施工方案
- 安徽生鲜冷藏冷库施工方案
- 内蒙古自治区锡林郭勒盟2024-2025学年高一上学期11月期中 生物试题(含答案)
- LOGO著作权转让协议书
- 2024年教师资格考试高级中学面试语文试题及解答参考
- 译林新版(2024)七年级英语上册Unit 5 Grammar 课件
- 关于健康的课件图片
- 2024年度上海市高校教师资格证之高等教育心理学题库与答案
- 第三章+相互作用-力+大单元教学设计 高一上学期物理人教版(2019)必修第一册
- 中国航空协会:2024低空经济场景白皮书
- 体育赛事组织服务协议
- 适合全院护士讲课
- 2024年医学高级职称-全科医学(医学高级)考试近5年真题集锦(频考类试题)带答案
评论
0/150
提交评论