目 录
1 前言 1
1.1 背景 1
1.2 论文主要内容与结构 1
2 基础技术介绍(一) 2
2.1 Android概述 2
2.2 Android架构 2
2.3 Android应用程序类型分析 5
3 基础技术介绍(二) 6
3.1 地图简介 6
3.1.1 地图概念 6
3.1.2 构成要素 6
3.1.3 其他相关知识 6
3.1.4 中国手机地图产业链 7
3.1.5 手机最后欢迎的地图功能 7
3.2 百度地图API 8
3.2.1 百度地图API产品 8
3.2.2 百度地图 Android SDK 8
3.2.3 使用范围 8
3.2.4 商业应用与收费情况 9
3.2.5 地图运营资质 9
3.3 选择百度 9
4 设计与实现 10
4.1 功能模块及其实现 10
4.2 文件结构与用途 11
4.3 地图的实现代码 11
4.3.1 DemoApplication.java 11
4.3.2 AndroidMainfest.xml权限文件 12
4.3.3 添加百度地图相关的库 13
4.3.4 地图的基本操作 14
4.3.5 定位相关说明 15
4.3.6 地铁查价说明 18
4.3.7 路线规划说明 18
4.3.8 地点查找说明 20
4.3.9 结果绘制地图 21
5 功能测试 22
6 总结 25
6.1 研究工作总结 25
6.2 所遇问题分析总结 26
6.3 不足与期望 26
6.4 领悟与经验 26
参考文献 27
英文摘要 28
附录 29
致谢 45
1.2 论文主要内容与结构
本文的研究工作是设计和实现一个Android平台的交通查询APP,实现广州的公交、地铁价格、地图的查询及定位的功能。使用户能通过手机等移动设备随时广州的查询交通。
本系统基于百度地图API,在Google的Android平台下的研究工作。本文研究的内容主要由以下几方面:
1.Android开发平台的介绍:介绍Android平台相关知识,深入阐述在Android平台下进行开发;
2.地图知识的介绍:介绍地图相关知识,比如矢量地图,栅格地图,地图分类的知识。
3.百度地图API的介绍:百度地图Android SDK(Software Development Kit)是一套基于Android1.5及以上版本设备的地图开发工具。该套 SDK开发适用于Android系统移动设备的地图应用,通过接口,可以轻松访问百度地图服务和数据,构建功能丰富、交互性强的地图应用程序。
4.交通查询的实现:根据提出的系统架构,并阐述本移动交通查询的设计和具体实现,最终对系统进行测试工作。
本文将介绍项目所用的Android的基本知识,讨论在Android平台下的程序需开发包括环境配置,编译等。
然后介绍地图相关的知识及与本项目相关的百度地图SDK的介绍,通过讨论选择百度地图API明确APP的可行性,提出APP的需求,对APP进行总体分析。
明确了APP的需求后,将根据需求讨论如何建立一个相对合理的APP,并详细介绍APP实现,对APP的各个模块实现进行阐述,此部分是本文讨论的重点。
最后本文将对该APP实现的功能以及运行状态进行总结。
4 设计与实现
4.1 功能模块及其实现
1.交通查询: 主要包括换公交乘查询线路查询和站点查询、驾车和步行;
2.地铁查询: 主要包括地铁线路查价信息;
3.地图查看: 通过连接到网络发送数据获取广州市地图;
4.定位:通过手机的GPS定位当前位置。
功能模块如下图5。
1.以公交搜索为例,路线规划流程如下图11:
2.公交方案详情类MKTransitRoutePlan:
方案包含的公交线路段数public int getNumLines():
if (routePlan.getNumLines() > 0) {
for (int i = 1; i < routePlan.getNumLines(); i++) {
}
};
公交路段索引public MKLine getLine(int index),返回方案包含的第index条公交线路路段:
MKLine mkLine = routePlan.getLine(0);
3.搜索服务MKSearch类(位置,驾车,公交,步行):
公交路线搜索transitSearch(返回结果在MKSearchListener里的onGetTransitRouteResult方法通知):
mSearch.transitSearch(String city, MKPlanNode start, MKPlanNode end);
参数: city - 城市名,用于在哪个城市内进行检索(必须填写)
start - 检索的起点,可通过关键字,坐标,两种方式指定
end - 检索的终点,可通过关键字,坐标,两种方式指定
由参数city可知,本文设定了公交搜索是广州采用关键字检索,就不能搜索深圳的公交信息:
MKPlanNode stNode = new MKPlanNode();
stNode.name = editSt.getText().toString();
MKPlanNode enNode = new MKPlanNode();
enNode.name = editEn.getText().toString();
mSearch.transitSearch("广州", stNode, enNode);
4.公交路线搜索结果MKTransitRouteResult类:
返回公交路线起点getStart:
mMapView.getController().animateTo(res.getStart().pt);//地图上从起点绘制
返回方案数目getNumPlan:
@Override
public int getCount() {
return res.getNumPlan();
};
返回公交方案getPlan:
routeOverlay.setData(res.getPlan(0));
在这里插入图片描述