Android手机定位与地图实现

在一个不熟悉的环境中,获得自己的位置,选择合适的就餐地点,住宿和公交路线成为一项难题。本次的实践项目就是为了解决上述难题的,通过调用百度地图的接口实现定位、查询公交路线、寻找合适的餐饮及住宿等功能,满足人们出行功能。

一 需求分析

1.1 功能需求

1)地图浏览和控制----提供国内大多数城市的浏览和对地图基本控制,如放大、缩小、卫星切换等等。

2)搜索地点----能够根据用户提供的信息,搜索对应的位置。如火车站地点、餐馆、酒店等等。

3)公交查询------查询某一城市的特定公交路线。

4)我的位置---实时定位用户的位置。

1.2 性能需求

在项目开发完成后,是否能安装在各类实体机上,并且实现预期的功能。

1.3 可扩展性需求

在未来,随着客户需求的增加,该项目能很好的扩展,来实现更多的功能。

Axure建模 当鼠标停在搜索框中,提示的文字消失;还有一组单选按钮

二 系统设计

2.1 本系统主要分为四个模块,如下图所示:

1)定位功能模块----利用GPS提供的服务,得到当前用户所在的位置,并且能够根据用户的位置实时更新。

2)公交路线查询模块----可以查询城市的某一特定公交路线的行车路线,并将各站点标识出来。

3 目的地查询模块----用户通过输入具体的城市和地点信息,可以查看该地点的所处在的地图,并将红色的标点标识出来。

4)其他模块。更具用户的需求进行添加。

2.2、系统的操作流程图。

下图为系统的操作流程图:

2.3、类的相互关系

  在百度地图几种功能的实现中他们拥有的类如下图所示:

  在这项工程中,各个子界面是相互独立存在的,从上图可看出子界面的独立存在的类和共同享有的类;共同拥有的类是实现调用接口,使图形可视化。

2.3.1、定位类的关系

三、系统实现

3.1 系统的实现需要百度地图的授权。首先申请KEY;申请Key后需要在androidManifest.xml取得百度给予的权利:

由于系统会在不同屏幕上运行,所以需要适应不同的屏幕,给用户留下好的体验实现的方式是:

3.2、主界面

主界面的标题显示是用setText()方法实现,BMapApiDemoMap的类来展示主窗口。并通过建立一个数组demo对象将进入子界面的按钮显示出来。对过单击列表onListItemClick方法可以进入相对应的子界面中。

3.3、定位子界面

通过BaiduMap是地图的操作方法与接口,并通过MapView进行显示地图的视图,默认的地图中心为天安门广场。怎么实现定位?是通过定位服务客户端类LocationClient 调用setOpenGps()方法打开手机的GPS实现实时定位。

从上图中我们能看到普通、默认图标、自定义图标。它们的共能分别是定位模式按钮及定位图标按钮。定位模式是通过LocationMode类实现的,在这里定位模式有三种模式,分别为普通模式、跟随模式、罗盘模式,当点击按钮时通过OnClickListener类进行监听单击的变化,来实现不同的模式。RadioGroup中使用类组单选按钮。如果我们选中一个单选按钮,他会自动取消同一组之前的单选按钮,进行切换定位的图标。

3.4、公交查询子界面

PoiSearch为搜索类、BusLineSearch为城市公交查询类,这两个类的联合使用能查询公交路线。为了很好的查看公交路线的公交站点,使用popupText显示出来。下图是实例图:

3.5、目的地的查询模块。

主要通过PoiSearch搜寻感兴趣的地方,实现查找。当查找不成功是,会提示未找到结果。

因为查找不可能很精确,所以用一组按钮,显示没有在图中标记感兴趣的点。如图:

四、测试

4.1、功能测试用例测试用例

4.1.1、定位功能的实例测试

为了检验定位功能,做出了如下的测试:

在测试中,基本符合了实时定位的要求,只是在定位界面中设置的定位模式按钮的功能没有达到要求。

4.1.2、公交查询的实例测试

进过上面的测试满足公交路线查询功能。

4.1.3、目的查询的实例测试

通过测试满足以感兴趣地点的查询。

4.2 定位实例测试

根据变换定位图标的形状来测试设计的功能

4.2 公交查询实例测试

当输入能容不能查到结果会自动提示

当输入正确时会出现公交路线图

4.3 地点查询实例测试

当输入的地点查找不到时

当输入正确的地点和名称

经过测试我们可以发现,设计的系统基本符合要求。

    五 总结

5.1 开发过程遇到的问题和解决

1、android studio 环境的搭建。开始在android studio搭建百度地图开发的环境时,一直提示导入的.jar包不正确,查找了一些android studio配置百度地图环境方式。我一 一试过依然不正确;最终放弃android studio 软件进行开发。本次项目的软件是用曾俊宏提供的eclipse软件进行开发的。

2、网上有很多android百度地图开发的教程,但是我自借鉴他们做的工程时,发先一个很大的问题他们导入的.jar包很多着找不到了,利用现在的.jar包,来写教程给的代码会出问题。因此找到一个合适的.jar 包很重要。还有他们提供的android本版本比较低,虽然在eclipse提示有问题,但是问题很快就消失了。如果我们将程序导入虚拟机或者实体机,我们导入的软件会自动退出,不能正常的工作。

3、在百度地图开发中心申请key也出现了一些问题,有可能申请的key在工程中是不起作用的。在申请时必须输入正确的eclipse 的hash值 和建立工程的包名。否则调不出百度地图的图形或者调出来图形不能满足工程的需要。

5.2 项目的不足与改进计划

1)、在这次的项目中,算然实现的功能模块很多,但是不能有效的整合在一个界面中,给人一种界面比较乱的感觉。

2)、许多子界面的功能重合,很大的浪费了资源。需要进行代码整合和优化达到系统的优化,使用户更愿意接受。

3)程序托管在开源中国。(永远的q2)。

5.3 感悟

在整个课程中学到了很多有益的东西

1、在学习中对知识的总结是一件很重要的事情。即能对前段学到的知识进行归纳和了解自己掌握的东西,还能为下阶段学习进行合理的安排,提高学习的效率。

2、对知识要保持求知,求知欲越强越能激发自己的学习欲望。娄老师是我很好的榜样,要向老师多学习。

3、在上周,老师的讲话,我深受启发,只有多学习多掌握知识才能找到自己的兴趣爱好,在工作中才能有更多的选择。

4、在这短短两个月中,从老师这里学到很多的知识,在以后的研究生期间会有利自己的学习。最遗憾的是没有掌握老师给我们建议的学习工具,JAVA 和android不能灵活的应用。

5、学习时间安排不合理,有畏难的思想;主要原因是大学期间懒散的思想,还保留着,在以后的学习中会克服掉。

6、在以后的研究生期间希望还能跟着娄老师学习,并提升自己的能力。

android 实践项目 总结 (修改)的更多相关文章

  1. Android 实践项目开发 总结

      Android 实践项目开发 总结 课程:移动平台应用开发实践  班级:201592  姓名:杨凤  学号:20159213 成绩:___________       指导老师:娄嘉鹏       ...

  2. android 实践项目四

    android 实践项目四 本周主要是开发android baidumap实现公交的查询 1.权限的取得和对屏幕的支持 <uses-permission android:name="a ...

  3. android 实践项目三

    android 实践项目三 本周我主要完成的任务是将代码进行整合,然后实现百度地图的定位与搜索功能.在这次实现的 图形界面如下: 在本周的工作中主要的实现出来定位与收索的功能,在地图中能实现了定位,显 ...

  4. Android实践项目汇报

    Android实践项目:推箱子 推箱子是一款来自日本的古老游戏,其设计目的是训练人的逻辑思维能力.游戏场景一般是设定在空间狭小的仓库中,要求把箱子摆放到指定位置.这就要求玩家巧妙的运用有限的空间和通道 ...

  5. Android实践项目汇报总结(上)修改

    微博客户端的设计与实现(上) 第一章 绪论 1.1课题背景 微博可以说是时下最受人们所喜爱的一种社交方式,它是一种通过关注机制分享简短实时信息的广播式的社交网络平台.通过微博我们可以了解最新的时事新闻 ...

  6. Android实践项目汇报(总结)-修改

    天气客户端开发报告 1系统需求分析 1.1功能性需求分析 天气预报客户端,最基本就是为用户提供准确的天气预报信息.天气查询结果有两种:一种是当天天气信息,信息结果比较详细,除温度.天气状况外还可以提示 ...

  7. android copy项目后修改项目名

    有个eclipse下的Android项目,现在因为有个需求想在复制出来一个项目,把这个项目变成两个独立项目.在同一个工作空间下不能同时存在项目名称一样的项目,所以需要修改项目名.具体操作如下: 1.修 ...

  8. Android实践项目汇报(二)

    Google天气客户端 本周学习计划 学习布局控件和XML解析的相关知识. 看懂程序代码. 把借鉴代码成功导入到Android Studio中并运行成功. 实际完成情况 我学习到布局控件XML在res ...

  9. Android实践项目汇报-改(一)

    Google天气客户端NABC Need(需求):  功能性需求分析 天气预报客户端,顾名思义就是为用户提供实时准确的天气信息,方便用户出行生活.根据用户日常需求,软件完成后点开,载入界面,显示查询界 ...

随机推荐

  1. UIGestureRecognizer和UITouch

    UIGestureRecognizer和UITouch是分别判断的,如果判定了是手势,那就不再触发UITouch事件,如果两者并存,则会先执行UITouch事件,之后如果确认是手势,不再执行UITou ...

  2. 编译x11版本qt

    用buildroot 选择x11相关 在选择qt x11版本   export PATH=~/buildroot/output/host/usr/bin:$PATH 进入~/buildroot/out ...

  3. 最新版OpenWrt编译教程,解决依赖问题

    Install git , to conveniently download the OpenWrt source code, and build tools to do the cross-comp ...

  4. Unity3d 镜面折射 vertex and frag Shader源代码

    Unity3d 镜面折射  网上能找到的基本上是固定管道或表面渲染的shader. 特此翻译为顶点.片段渲染的Shader, 本源代码仅仅涉及shader与cs部分, 请自行下载NGUI  unity ...

  5. 搭建基于HTTP协议内网yum仓库

    目录 1. 前言 2. 把rpm包下载到本地 3. 配置nginx对外提供服务 4. 配置本地repo文件 5. 生成repodata信息 6. 检查及使用 7. 对管理机器上的仓库进行更新 参考资料 ...

  6. Andrew Ng-ML-第十九章-应用举例:照片OCR(光学字符识别)

    1.问题描述与 OCR pipeline 图1.图像文字识别流水线 首先是输入图片->进行文字检测->字符分割->字符识别. 这些阶段分别需要1-5人这样子. 2.滑动窗口 主要讲滑 ...

  7. 函数及while实例

    输入1,输出:if 输入2,输出:elif 输入其他数值,输出:else 输入非数字,输出:except def greeting3(name3, lang3=1): if lang3 == 1: r ...

  8. [LeetCode] 193. Valid Phone Numbers_Easy tag: Bash

    Given a text file file.txt that contains list of phone numbers (one per line), write a one liner bas ...

  9. swoole udp

    server.php <?php $server = new swoole_server('127.0.0.1', 9502, SWOOLE_PROCESS, SWOOLE_SOCK_UDP); ...

  10. 读书--编写高质量代码 改善C#程序的157个建议

    最近读了陆敏技写的一本书<<编写高质量代码  改善C#程序的157个建议>>书写的很好.我还看了他的博客http://www.cnblogs.com/luminji . 前面部 ...