这篇文章主要介绍了Android百度地图自定义公交路线导航的相关资料,需要的朋友可以参考下
正文
Android百度地图自定义公交路线导航
一、问题描述
基于百度地图实现检索指定城市指定公交的交通路线图,效果如图所示
二、通用组件application类,主要创建并初始化bmapmanager
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
public class app extends application { static app mdemoapp; //百度mapapi的管理类 public bmapmanager mbmapman = null ; // 授权key // 申请地址:http://dev.baidu.com/wiki/static/imap/key/ public string mstrkey = "your appkey" ; boolean m_bkeyright = true ; // 授权key正确,验证通过 // 常用事件监听,用来处理通常的网络错误,授权验证错误等 public static class mygenerallistener implements mkgenerallistener { @override public void ongetnetworkstate( int ierror) { log.d( "mygenerallistener" , "ongetnetworkstate error is " + ierror); toast.maketext(app.mdemoapp.getapplicationcontext(), "您的网络出错啦!" , toast.length_long).show(); } @override public void ongetpermissionstate( int ierror) { log.d( "mygenerallistener" , "ongetpermissionstate error is " + ierror); if (ierror == mkevent.error_permission_denied) { // 授权key错误: toast.maketext(app.mdemoapp.getapplicationcontext(), "文件输入正确的授权key!" , toast.length_long).show(); app.mdemoapp.m_bkeyright = false ; } } } @override public void oncreate() { log.v( "bmapapidemoapp" , "oncreate" ); mdemoapp = this ; mbmapman = new bmapmanager( this ); mbmapman.init( this .mstrkey, new mygenerallistener()); mbmapman.getlocationmanager().setnotifyinternal( 10 , 5 ); super .oncreate(); } @override //app的退出之前调用mapadpi的destroy()函数,避免重复初始化带来的时间消耗 public void onterminate() { if (mbmapman != null ) { mbmapman.destroy(); mbmapman = null ; } super .onterminate(); } } |
三、编写公交的路线图层(customrouteoverlay)和图标标识(customoverlayitem)
customrouteoverlay组件扩展routeoverlay:
主要公交、步行和驾车线路图层,将公交、步行和驾车出行方案的路线及关键点显示在地图上,根据车辆路线的起点和终点进行驾车路线的检索;
customoverlayitem扩展itemizedoverlay<overlayitem>:
覆盖物的集合类,使用这个类可以将地图上具有相同属性或者特性的坐标使用图标标识出来,overlayitem 这个类对象则是itemizedoverlay中一个一个的item对象 也就是每个坐标对应的覆盖物
customrouteoverlay类代码:
发表评论