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搜寻感兴趣的地方,实现查找。当查找不成功是,会提示未找到结果。
因为查找不可能很精确,所以用一组按钮,显示没有在图中标记感兴趣的点。如图: