写在前面:
出去玩免不了挤公交、等地铁,不知道乘车方案当然不行,用官方APP吧,缺点一大堆,手机浏览器在线查的话既慢又麻烦…为了解决这些问题,我们来做一个简版的出行助手,嘛嘛再也不用担心我会迷路了\^o^/
一.功能需求分析
基础功能:
- 能够根据起点站和终点站查询乘车方案,并显示多种乘车方案
- 能够根据公交路线号查询沿途站点(防止坐过站…)
扩展功能:
- GPS定位获取起点站(距离当前位置最近的站点名)[后来放弃了,费电,费流量…]
- 显示地图[后来也放弃了,地图对用户来说好像没什么太大用处(当然喜欢走路的另当别论),至少对本人来说地图没什么用]
二.可实现性分析
1.百度地图开放平台提供的API可以实现乘车方案查询
2.3.4.同上,结论:完全可以实现需要的所有功能
三.开发前提
- 需要BaiDuMap的开发者账号
- 需要key(现在新版的地图key与App唯一绑定)
- 需要官方提供的jar包
搜索一下“百度地图开发”,上面的三件事情分分钟搞定(说到这里不得不赞一下这极低的门槛了,腾讯、新浪微博…的开发者账号就很难认证,有的甚至需要上传身份证复印件…)
四.研究API文档以及Demo
API文档说实话做得不怎么样,函数详解都只有一句话,建议直接看Demo,附有大量注释,简单易懂
五.开始编码(下面给出的源码都亲测可用,并附有最详细的注释)
源码见[源码下载]
P.S.源码都在上面,如有疑问请在下方留言
六.显示地图
[最先实现的就是这个(第一次开发地图有点激动,想看看地图长什么样子…),在需求中本没打算设计,虽然后来放弃了,但下面的源码仍然亲测无误]
源码见[源码下载]
七.离线地图
离线地图好处多多,但若是要开发需要推广给众多用户的App的话,建议要么做下载离线地图包功能(Demo中有例程,很容易),要么考虑在App第一次运行的时候把APK资源文件中的离线地图复制到用户SD卡中(理论上可以实现),当然这样的话地图适用范围会受到限制,开发有明确地域限制的App可以选用(例如:西安出行助手)。
离线地图是这样用的:
- 把从官网下载的文件夹整个复制到手机SDCARD指定路径(具体放哪里请看压缩包中的ReadMe.txt介绍)
- 在程序中需要对离线地图包进行scan初始化(其本质是对地图包的解析,把一个大文件变成了几个小文件,所以,不进行解析的话地图包是不能用的)
- 貌似显示地图的方法会自动判断(优先使用离线地图,如果有的话)