Android百度地图自定义公交路线导航

2019-12-10 19:08:21于海丽
易采站长站为您分析Android百度地图自定义公交路线导航的相关资料,需要的朋友可以参考下  

一、问题描述

基于百度地图实现检索指定城市指定公交的交通路线图,效果如图所示

Android百度地图自定义公交路线导航

二、通用组件Application类,主要创建并初始化BMapManager

public class App extends Application {
static App mDemoApp;
//百度MapAPI的管理类
public BMapManager mBMapMan = null;
// 授权Key
// 申请地址:http://www.easck.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: