校园二手交易平台_第1页
校园二手交易平台_第2页
校园二手交易平台_第3页
校园二手交易平台_第4页
校园二手交易平台_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

SHANDONG毕业设计说明书校园二手交易平台学 院: 计算机科学与技术学院 专 业: 软件工程 学生姓名: 张海东 学 号: 1111057041 指导教师: 于林平 2014 年 月中文摘要摘要目前基于地图API的手机软件种类很多,给人们的出行带来了很大的便利。通过基于LBS的服务,人们可以很方便的获取公交路线,周边站点等信息。但是用户获取的信息基本上是保存在本机中,不利用于数据的持久化。添加用户反馈功能,实时接收用户的反馈信息,不断更新产品。实时更新该产品中的图片,以便达到更好的用户体验。该软件实现面临的主要的问题是:通过百度地图API获取用户需求的数据并通过合适的控件显示出来、搭建服务器后台提供需要更新的数据以及如何通过手机APP访问网站。该产品的服务器后台利用tomcat作为服务器,利用Oracle存储数据,开发语言JSP + Servlet + JavaBean,开发工具是MyEclipse,采用MVC的设计模式,将数据处理层、业务逻辑层、用户表示层清晰分开。客户端主要是利用android开发语言,开发工具为Eclipse,平台为android开发虚拟机。 关键词 地图APP,百度地图,LBS -II-英文摘要Abstract There are many kinds of software which is based on Baidu Maps API. People have benefited a lot from these softwares. By means of LBS, it is vary convenient for people to obtain much helpful information. Such as line information. But information which is gained by users from Internet is saved in their own cell phones. This kind of design is not favorable to persistence of data. At the moment, feedback is very helpful function to the developers. Developers can update their products on time by meas of the feedback information. As a word, these methods are to upgrade the user experience. In order to accomplish the functions of this software, the developer faces main problems. For example, how to get useful information users want, how to display the information neatly, how to build the server, how to access the server by app. The environment of server is made of tomcat oracle and eclipse. The development language is JSP Servlet and JavaBean. The mode of design is MVC. The language of android client is android. The developer tool is eclipse. The running platform is android development virtual machine. Key Words: Map APP, Baidu Map, LBS目录目 录 1 绪 论11.1 本课题的研究意义及必要性11.2 相关领域国内外应用的现状及发展趋势12 系统分析32.1 系统功能要求32.2 系统开发功能32.3 系统的可行性分析43 总体设计53.1 功能模块划分53.2 系统模块设计图53.3 系统流程图54 详细设计84.1 各模块的功能84.1.1 公交模块84.1.2 自动定位模块114.1.3 用户中心模块114.1.4 设置模块114.1.5 分享模块124.2 系统数据库的设计124.2.1 数据库表的结构124.2.2 数据库选择及理由14绪论1 绪 论1.1 本课题的研究意义及必要性伴随着智能手机的出现,手机APP开始大展身手,各式各样的手机应用软件进入我们的日常生活,给我们的衣食、学习、娱乐、购物、出行等带来了极大的便利。功能各异的手机APP在我们的生活中发挥着越来越重要的作用。 所谓百度地图API就是为开发者免费提供的一套基于百度地图服务的应用程序接口。包括android SDK、定位SDK、LBS等多种开发工具和服务,提供基本的地图展示、搜索、定位、路线规划、LBS和检索等功能,适合于PC端、移动端、服务器等多种设备,多种操作系统下的开发。通过研究基于百度地图API的智能手机程序设计这一课题,学习百度地图API的接口设计以及具体实现,了解智能手机程序的开发流程,了解和掌握智能手机程序设计的相关技术,并通过自己所学的专业知识,开发一款手机软件,提高自己的实践能力,真正将校内知识与社会需求相结合,为自己从事软件开发事业打下坚实的基础,积累一定的软件开发经验。 1.2 相关领域国内外应用的现状及发展趋势在国内:APP确实发展的如火如荼,但是除了游戏和广告之外,很多的APP还没有找到适合自己的盈利模式。很多手机游戏获利可观,而其他类型的APP应用面临的同一个遭遇是:数量剧增,同质化严重,十几万款APP中,只有几百个可以生存。即使是手机游戏目前也面临着极高的门槛,首先要付出极高的精力去开发极具创意的游戏,其次还要有很好的平台投放以及运营能力。未来,“小作坊”式的游戏开发将不复存在。移动广告从理论上说是一种很好的盈利方式,理由是手机规模远大于PC规模。尽管PC应用和网页可以通过流量变现模式生存,但是在手机上做广告是很难很难的。流量变现是整个PC互联网的基础,而移动互联网却没有这个基础。总体而言,整个APP市场发展现状并不乐观,只有极少数可以盈利。增值收费模式将是未来发展的重点,随着行业规范日渐完善,这种模式将成为一种成熟的盈利模式。另外,手机与生活更加密切结合,APP就能更好的服务用户的生活在国外:美国目前已经不是App创建的领导者,它创建的App已经从2011年占全球应用程序市场份额的45,下滑到2013年的36,如果再往前推,把时间定格在2008- 63 -系统分析年的话,美国创建的应用程序占据全球市场份额的68。很明显,从这些数字可以看出美国在全球App市场的领导者地位已逐渐消退,不过这也说明App行业越来越全球化。 2 系统分析 2.1 系统功能要求目前手机地图软件发展越来越完善,基于百度地图API的开发也越来越多,通过百度向开发者提供的API我们可以开发很多的应用来提高我们的生活质量,百度地图API在出行、衣食等方面的作用越来越突出。通过该课题,研究和学习百度地图API的应用,拓展自己的知识。本课题旨在开发出一款实用的基于百度地图服务的APP手机软件。开始启动软件时,在启动界面能自动从服务器后台随机获取一条笑话,给使用者的生活增加一些笑点。登陆此软件时需要用户注册账号和密码,每次需要用户凭借账号和密码登陆,方能实用该软件提供的功能。对于用户丢失密码,该软件能提供两种找回密码的方式,一是通过手机找回,二是通过邮箱找回。能够实现自动定位能够,通过设定查找半径,来查询在用户周围的站点信息,帮助用户找到附近的站点。点击任意一个站点,便可进入到经过该站点的所有线路的公交车。能够实现公交线路查询,查询的结果能按顺序列车该线路经过的站点,能够实现收藏能够。能够实现站点查询,当乘客想去某个站点,但并不清楚该乘坐哪条公交线路,“站点查询”搜索功能可以告诉乘客经过该站点的所有公交线路,选择合适的线路并且选择好线路后点击进入线路,查看该线路经过的站点信息。能够公交换乘查询能够,当用户只知道起点和终点时,帮助用户规划公交线路,并可以选择公交线路的查询方案,时间优先、最少换乘优先、距离优先。2.2 系统开发功能该软件是一个基于百度地图API的应用程序,首先我们必须获取使用API的权限,这样我们我们才可以开发该软件具体的功能。要实现用户的登录和注册功能和接受用户的反馈信息的功能就必须自建服务器后台用于保存用户注册和用户反馈的详细信息。实现路线查询功能,显示用户查询路线的详细信息。实现站点查询功能,显示用户查询站点处的公系统测试交线路信息。实现公交换乘,帮助用户定制公交线路。实现收藏功能,收藏用户经常需要的信息。因此该系统要实现的功能有:(1)数据库的设计数据库包括保存用户注册的账号和密码的数据表、保存用户手机号码的数据表、保存用户邮箱的数据表、保存用户反馈信息的数据表以及用户数据表之间的关系。(2)服务器接口设计当用户注册时,通过该软件向服务器发送一个注册请求,当服务器接受到请求,必须能够获取用户的用户名和密码信息,将用户的信息保存在数据库中,完成用户的注册操作。当用户登录时,通过该软件向服务器发送一个登录请求,当服务器接受到登录请求,通过服务器设计接口能够获取用户的登录信息并进行合法性验证,完成用户的登录功能。当用户反馈建议时,服务器能够知道那个用户在反馈信息以及获取到用户反馈的什么信息,并及时保存在数据库中。(3)线路查询、站点查询、公交换乘借助于百度地图API,实现线路查询、站点查询和公交换乘功能。2.3 系统的可行性分析本课题服务器的实现采用java作为开发语言,在MyEclipse 10环境下进行开发。java是一种面向对象的新一代编程语言,具有简单、安全、稳定、可靠、跨平台等优点,可在各种不同机器、操作系统的环境下进行开发,同时具有解释型语言和编译型语言的特性。Java的诸多优点使得它非常适合于Web应用程序设计。手机端采用android开发语言,开发工具是eclipse,程序运行在android虚拟机上。因为之前有了Java基础,所以学习android这门语言就很有优势。3 总体设计3.1 功能模块划分根据该系统的实际需要,实现起来大致可分为以下几个方面:(1)数据库的设计保存用户必须的信息(2)服务器访问接口的设计 通过设计的接口访问服务器,为用户注册、登录、反馈的实现做铺垫。(3)地图模块此模块主要包括三个功能:路线查询、站站查询和公交换乘(4)用户模块此模块主要包括三个功能:注册、登录、反馈信息、设计找回密码的方式3.2 系统模块设计图Android手机系统 接口设计 用户模块 地图模块 数据库设计 反馈注册登录公交换乘站站查询收藏功能路线查询反馈接口注册接口登录接口图3-1 系统模块图3.3 系统流程图注册流程图:用户输入账号和密码,单击注册按钮,此时发送一个注册请求,服务器接收到请求后验证,验证成功,向数据库中保存用户注册信息,提示用户注册成功;否则,注册失败,并提示用户。流程图如下图3.2所示。图3-2路线查询流程图:当用户输入查询线路,若线路存在则显示该线路经过的所有站点信息,否则,提示用户没有该线路。流程图见图3-3。图3-34 详细设计4.1 各模块的功能此系统大部分功能需要在接入网络的情况下使用,用户通过该软件可以输入公交线路获取此路线的公交车所经过的所有站点,可以输入某个站点获取经过该站点的所有的公交线路,点击每条线路有可以查看每条线路经过的站点,假若用户只知道出行的起点和终点,但不清楚如何乘坐公交车到达的情况下,该系统会从较快捷、少换乘、少步行3个方面给出相应的换乘方案供乘客选择。如果用户有关于该系统的好的想法或建议,也可以反馈给我们,以便我们更新该系统,但此时会要求用户进行注册。最后,该系统也可以通过社会化组件分享给其他人使用。也可以扫描二维码的方式共其他用户下载。该系统主要分为六大大模块:公交模块、自动定位、用户中心模块、设置模块、分享和登陆模块。公交模块主要包括:线路查询、站点查询、公交换乘和收藏夹;自动定位模块主要可以定位目前用户所在的位置,还可以设置查询半径,帮助用户搜索出附近的站点信息等;用户中心模块主要包括:用户签名、账户验证、修改密码、查看收藏夹和退出;设置模块主要包括:关于我们和用户反馈;分享模块实现告诉其他人使用该软件;登陆模块主要包含:用户登陆、用户注册和找回密码三个方面。4.1.1 公交模块(1)线路查询若用户想要查询某条公交线路的详细信息时,线路查询搜索功能将给用户在地图上显示出该公交线路经过的所有站点。当用户以地图的方式查看线路信息时,可以选择截屏将线路信息保存到相册中,也可以选择站点列表,以列表的形式更直观的方式查看路线,也可以点击收藏按钮,将路线信息保存到本地,以便用户在不接入网络的情况下,查看以前的记录,尽可能节省用户上网流量。(2)站点查询当用户想去某个站点,但不知道该乘坐哪条公交线路时,可以使用站点查询搜索功能帮助用户查询出经过该站点的所有的公交线路,选择合适的路线并且选择好合适的路线点击进入路线,还可以查看该路线经过的所有站点信息,同时也可以以列表的形式显示所有线路。(3)公交换乘当用户只知道起点和终点时,但不知道如何乘坐公交车到达的情况下,可以使用公交换乘搜索功能查询换乘方案,并且换乘方案会从较快捷、少换乘、少步行3个方面给出相应的换乘方案供用户选择。(4)收藏夹当用户将有关线路的信息加入到收藏夹后,可以打开收藏夹,对收藏的数据进行编辑处理。(5)用例图在公交模块下又包括四个子模块,路线查询、站点查询、公交换乘和收藏夹,各个子模块的用例图如下所示。图4.1 线路查询子模块用例图图4.2 站点查询模块用例图图4.3 公交换乘子模块用例图图4.4 收藏夹子模块用例图4.1.2 自动定位模块(1)定位过程当用户打开GPS,在接入网络的情况下,通过网络自动解析用户所在的位置,并将该位置显示在地图上。4.1.3 用户中心模块 (1)用户签名用户可以在此补充自己的详细信息,包括个人的头像、昵称、姓名、性别和地址。 (2)账户验证用户注册成功后,可以通过两种方式进行账户验证,一种是手机号,另一种是邮箱。当用户忘记自己的密码时,可以通过这两种方式找回自己的密码。 (3)修改密码当用户需要增加密码的复杂度,可以通过该功能完成,通过输入原密码、新密码和确认密码来完成密码修改工作。 (4)查看收藏夹用户需要接入网络才能使用地图功能,当用户把自己查询的出行信息添加到收藏夹时,在离线情况下,可以通过查看收藏夹来完成。 (5)退出实现用户退出该应用程序。 (5)用例图该用户中心模块的用例图如图4.5所示。4.1.4 设置模块 (1)关于我们关于我们主要介绍了该软件的开发者、软件版本、二维码等信息,通过二维码可以下载该软件。 (2)用户反馈用户可以通过该功能反馈自己对该软件的满意度以及对该软件的修改建议。4.1.5 分享模块通过该功能,可以把该软件分享给其他人,让更多的人知道。4.1.6 登陆模块该模块主要实现用户注册、用户登陆和找回密码操作,当用户需要将自己的反馈意见提交到服务器后台时,要求用户完成登陆操作。4.2 系统数据库的设计数据库的设计在本系统中占有很重要的位置。因为数据库存储用户的登录信息、邮箱信息、电话信息、接受用户的反馈信息和每次运行软件的优美语句。为满足该系统的需要,设计如下面所示的数据项和数据结构:l 用户登录表:用户编号、用户名、密码、用户注册时间。l 用户信息表:信息编号、用户编号、用户昵称、用户名、性别、位置。l 用户手机号表:手机编号、手机号、用户编号l 用户邮箱表:邮箱编号、邮箱、用户编号。l 用户反馈表:反馈信息编号、反馈信息、用户编号l 开心一刻表:编号、内容4.2.1 数据库表的结构(1) 用户登录表表名:users, 在该表中保存了用户登录的基本资料,数据表结构如表4.1所示。表4.1 用户登录表字段名称数据类型字段长度备注useridVarchar2200用户编号usernameVarchar250用户账号userpwdVarchar250用户密码(2)用户信息表表名:userinfor, 在该表中保存了用户有关信息,其数据结构如表4.2所示。表4.2 用户信息表字段名称数据类型字段长度备注idVarchar2200信息编号useridVarchar2200用户编号nicknameVarchar220用户昵称realnameVarchar220用户真名sexchar2用户性别locVarchar2100用户位置(3) 用户手机号表 表名:tel, 该表存储用户进行账号验证的手机号,以便用户通过手机号找回密码,其数据结构如图4.3所示。表4.3 用户手机号表字段名称数据类型字段长度备注telidnumber10手机编号telnumber11手机号useridVarchar2100用户编号(4)用户邮箱表表名:email,该表存储用户进行账号验证的邮箱号,以便用户通过邮箱号找回密码,数据结构如图4.4所示。表4.4 用户邮箱表字段名称数据类型字段长度备注emailidnumber10邮箱编号emailnumber11邮箱useridVarchar2100用户编号(5)用户反馈表表名:feedback,该表存储用户反馈的信息,数据结构如图4.5所示。表4.5 用户反馈表字段名称数据类型字段长度备注FeedbackidVarchar2100反馈编号feekbackVarchar2200反馈信息useridVarchar2100用户编号(6)开心一刻表表名:happy,该表存储每次启动软件时,出现手机初始界面的信息。表4.5 用户反馈表字段名称数据类型字段长度备注msgidVarchar2100信息编号msgVarchar2200信息详情4.2.2 数据库选择及理由 目前常用的数据库分为超大型、中型和小型数据库三类。其中MySQL 属于中小型的数据库,它能够为中小型系统所需的数据库提供服务。MYSQL是一种开发源代码的关系型数据库,以开源、高性能、稳定性广泛应用于互联网的解决方案中。5 系统实现5.1 引导页引导页一个重要的作用就是在用户使用之前能够大致了解该软件的主要功能或展示出该软件的特色服务。如果引导页做的不美观,只能导致用户快速的滑过去。相反,一个精心制作的导航页,会给用户耳目一新的感觉,吸引用户的眼球,促使用户增加对软件的好奇心。但引导页不易太过花哨,能让用户一目了然的获取信息就足够了。5.1.1 引导页布局布局主要用到了ViewPager控件,该控件结合PagerAdapter适配器就可以为ViewPager控件绑定展示信息,用户就可以左右滑动ViewPager控件实现信息的浏览。5.1.2 引导页功能逻辑引导页的设计目的是给初始安装软件的用户展示引导信息。因此,引导页只会出现一次,当用户再次使用软件时,不会看到引导页。根据这种需求的引导页,在实现该功能的使用需要一个标示,当程序启动时,告诉程序是否显示引导页。SharedPreferences可以很好的解决这个问题。SharedPreferences使用简单,能够轻松的实现数据的存储功能,数据主要以键值对的形式保存到xml格式的文件中。SharedPreferences是一个接口,无法创建SharedPreferences实例,必须通过Context.getSharedPreferences(String mode)来获取实例。name是xml文件的名字,mode是读取方式。读取方式有三种分别为:Context.MODE_PRIVATE(数据只能被本应用读写)、Context.MODE_WORLD_READABLE(数据能被其他应用读,但不能写)、Context.MODE_WORLD_WRITABLE(数据能被其他用户读写)。SharedPreferences是一个接口没有读写能力,必须借助Editor内部接口来完成数据存取操作。(1) 初始安装显示引导页处理逻辑private SharedPreferences sp = null;private boolean isFirst = false;/* 当第一次安装该应用时,会出现引导页,否则,引导页隐藏* LoginActivity 登陆界面* GuideActivity 引导页界面*/sp = getSharedPreferences(guide, MODE_PRIVATE);isFirst = sp.getBoolean(isShowing, true);if(!isFirst)Intent intent = new Intent(MainActivity.this, LoginActivity.class);startActivity(intent);finish();else sp.edit().putBoolean(isShowing, false).commit(); /必须commit()否则无效Intent intent = new Intent(MainActivity.this, GuideActivity.class);startActivity(intent);finish();(2) 引导页详情设计a、 继承PagerAdapter,自定义ViewPager适配器GuideUserAdapter,主要重写getCount() /获取卡页数量instantiateItem()/实例化卡页destoryItem()/删除卡页isViewFromObject()/官方提示写法b、 ViewPager实现private ArrayList data = null; /数据集合private LayoutInflater inflater = null;private ViewPager vp = null;private GuideUserAdapter guideUserAdapter = null;/获取ViewPager控件vp = (ViewPager)findViewById(R.id.guidepager);/准备数据data = new ArrayList();inflater = getLayoutInflater();pageView1 = inflater.inflate(R.layout.page1, null);pageView2 = inflater.inflate(R.layout.page2, null);pageView3 = inflater.inflate(R.layout.page3, null); data.add(pageView1);data.add(pageView3);data.add(pageView2);/实例化自定义适配器设置适配器guideUserAdapter = new GuideUserAdapter(data);vp.setAdapter(guideUserAdapter);5.2 功能主界面实现功能主界面设计简单,主要分为两部分:广告栏设计和功能展示。(1) 广告栏设计实现图5.1广告栏的实现和软件引导页的实现原理相同,不再详细介绍。主要介绍自动翻页导航策略。使用Handler消息处理机制和Thread多线程实现自动翻页。开启一个线程,在线程中每间隔一段时间就像Handler发送一个处理消息,Handler接到消息并滚动ViewPager。AtomicInteger是一个提供原子操作的Integer的类。在Java语言中,+i和i+操作并不是线程安全的,在使用的时候,不可避免的会用到synchronized关键字。而AtomicInteger则通过一种线程安全的加减操作接口。a、 定义对象private Thread indexThread = null; /线程 private AtomicInteger atomicInteger = new AtomicInteger(0); private final Handler viewHandler = new Handler() public void handleMessage(Message msg) showViewPager.setCurrentItem(msg.what);super.handleMessage(msg); b、自动翻页导航具体实现/开启一个线程indexThread = new Thread(new Runnable() public void run() while (isContinue) viewHandler.sendEmptyMessage(atomicInteger.get();atomicOption(););indexThread.start();/实现自增 定时功能private void atomicOption() atomicInteger.incrementAndGet();if (atomicInteger.get() imgs.length - 1) atomicInteger.getAndAdd(-6);try Thread.sleep(3000); catch (InterruptedException e) / 初始化索引视图public void initIndexView() dots = new ImageViewimgs.length;for (int i = 0; i imgs.length; i+) ImageView iv = new ImageView(this);if (i = 0) iv.setImageResource(R.drawable.page_now); else iv.setImageResource(R.drawable.page);iv.setLayoutParams(new LayoutParams(10, 10);dotsi = iv;LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(new ViewGroup.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);indexLayout.addView(iv, params);/更改圆点视图public void setBackgroundImage(int position) atomicInteger.set(position); /设置下一页显示的页面位置for (int i = 0; i imgs.length; i+) if (i = position) dotsi.setImageResource(R.drawable.page_now); else dotsi.setImageResource(R.drawable.page);5.3 各模块的实现该软件主要包括六大模块:公交模块、收藏模块、公告模块、建议模块、用户中心模块和设置模块。每个模块是相似功能的集合,共同来完成用户需求,以用户界面布局和功能的逻辑处理来分别介绍该软件的系统实现。5.3.1 公交模块(1) 公交路线查询利用公交查询功能,输入想要查询的线路名字,即可查询出该公交线路所经过的站点;保存用户搜索过的公交线路的历史记录,点击历史记录,还可以跳转到该公交线路经过的所有站点页面,在该页面添加返回顶部按钮,实现快速回到顶部功能;可以在地图上显示公交线路的路线图,点击路线图上的节点,还可以了解到站点的名称;a、 公交线路主要界面布局图5.2输入公交线路如123,点击搜索按钮,页面跳转到该条线路经过的所有站点列表如图5.2所示。图5.3若公交线路经过的站点比较多,当用户滑动到下方时,可通过点击返回顶部按钮,快速是列表滑动到顶部。点击右上角的显示地图功能,便可在地图上显示该公交线路的路线图,如图5.3所示。图5.3点击右上角的照相机按钮,弹出一个功能菜单,该功能菜单提供了三个小功能:定位、截屏和显示卫星地图。定位:通过该功能,用户可以在地图上看到自己所处的位置,选择最佳的乘车方案,从而做出最佳的出行策略,如图5.4所示。截屏:通过该功能,用户可以将信息以图片的形式保存到相册中,并可以在相册中浏览出行信息。在用户所处的环境无法上网时,这个功能将发挥很重要的作用。卫星图:通过该功能,用户可以看到卫星图。图5.4b、 公交模块系统实现线路查询主要用到了百度地图API提供的路线规划功能和POI检索功能。通过POI检索功能,获取公交线路的uid编号,然后利用路线规划提供的公交信息查询功能,获取公交详细信息。百度地图API提供的POI检索支持周边检索、区域检索、城市内检索和POI详情检索,该模块实现主要用到了API提供的城市内检索功能。周边检索:以某一点为中心,指定距离为半径,根据用户输入的关键字进行POI检索。城市内检索:在某一个城市内,根据用户的输入的关键字进行POI检索。区域检索:在指定举行区域内,根据用户的输入的关键字进行POI检索。POI详情检索:根据POI的ID信息,搜索该兴趣点的详情信息。百度地图API提供的路线规划公交信息查询、公交换乘查询、驾车路线规划和步行路线检索。公交信息查询:可对公交详细信息进行查询公交换乘查询:根据起点、终点、查询策略,进行路线规划方案。驾车路线规划:提供不同策略,规划驾车路线。步行路径检索:支持步行路径的规划。1、线路查询实现private BusLineSearch busLineSearch = null; /公交路线查询private PoiSearch mPoiSearch = null; /兴趣点查询private PoiCitySearchOption option = null; /城市内搜索参数设置/实例化兴趣点查询mPoiSearch = PoiSearch.newInstance(); /city 表示城市 keyword表示搜索的关键字 这里指代公交线路option = new PoiCitySearchOption().city(济南).keyword(busLine.substring(0, busLine.length()-1);/城市内检索mPoiSearch.searchInCity(option);/设置监听search.setOnGetPoiSearchResultListener(new OnGetPoiSearchResultListener() /poi 查询结果回调public void onGetPoiResult(PoiResult result) /获取公交线路对应的唯一uid编号/poi 详情查询结果回调public void onGetPoiDetailResult(PoiDetailResult result) );/根据获得的uid获取线路经过的所有站点信息busLineSearch = BusLineSearch.newInstance(); /搜索公交线路 busLineSearch.searchBusLine(new BusLineSearchOption().city(济南).uid(busLineId); busLineSearch.setOnGetBusLineSearchResultListener(new OnGetBusLineSearchResultListener() public void onGetBusLineResult(BusLineResult result) eachLineStation = new ArrayList();List busStations = result.getStations();Iterator iterator = busStations.iterator();while(iterator.hasNext()BusStation station = new BusStation();station = iterator.next(); eachLineStation.add(station.getTitle(); /站点名称 /以ListView展示站列表initListView(); );2、 历史记录功能利用SharedPreferences存储历史历史记录,易于存储方便快捷。将用户搜索过的历史痕迹以键值对的形式保存在xml文件中。当用户进入该功能,读取xml中的历史记录,并以ListView控件的形式展示出来。当用户执行搜索功能时,去除已添加过的历史痕迹。2.1初始历史记录列表视图public void initListView()/获取历史数据historyPre = getActivity().getSharedPreferences(history, 0); hisInfor = historyPre.getString(data, Nothing);if(!Nothing.equals(hisInfor)String list = hisInfor.split(,);busLineData = new ArrayList();for(int i = 0; i list.length; i+)if(!busLineData.contains(listi)busLineData.add(listi);/创建ListView视图historyList = new ListView(getActivity();/设置适配器historyListViewAdapter = new HistoryListViewAdapter(busLineData, getActivity();historyList.setAdapter(historyListViewAdapter);2.2添加历史记录不能重复添加/获取公交线路String busLine = busLineET.getText().toString().trim();String historyInfor = null;if(!.equals(busLine)historyInfor = historyPre.getString(data, Nothing);if(Nothing.equals(historyInfor)historyPre.edit().putString(data, busLine + ,).commit();elsehistoryPre.edit().putString(data, historyInfor + busLine + ,).commit();if(busLineData != null)/去掉重复记录if(!busLineData.contains(busLine)busLineData.add(busLine);elseToast.makeText(getActivity(), 输入不能为空, Toast.LENGTH_SHORT).show();2.3清空历史记录busLineData.clear();/清空数据historyListViewAdapter.notifyDataSetChanged(); /通知适配器数据发生改变 重新更新ListView视图if(historyPre != null)historyPre.edit().remove(data).commit(); /清空文件记录3、返回顶部stationListView.setSelection(0); 4、 公交线路线图百度地图是以图层的方式展示数据的,当我们需要在地图上展示信息时,只需要添加一个对应的图层,就可以将信息展示在百度地图上。BusLineOverlay显示公交线路的图层,给该图层设置数据并添加到百度地图上便可以显示公交线路图。private BusLineSearch lineSearch = null; / 公交线路查询private BusLineSearchOption option = null; / 公交线路查询选项设置private BusLineOverlay overlay = null; / 公交吸纳路图层lineSearch = BusLineSearch.newInstance();option = new BusLineSearchOption();option.city(济南).uid(list.get(0).uid);lineSearch.searchBusLine(option);lineSearch.setOnGetBusLineSearchResultListener(new OnGetBusLineSearchResultListener() public void onGetBusLineResult(BusLineResult result) /添加公交线路显示图层overlay = new BusLineOverlay(baiduMap);overlay.setData(result);overlay.addToMap();overlay.zoomToSpan(););5、 定位功能通过定位功能,可以在地图上显示自己目前所处的位置,这样可以方便我们到达最近的站点以及如何到达站点。实现定位功能,主要用到百

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论