驾车页 算路
示例代码:
BNRoutePlanNode sNode = new BNRoutePlanNode.Builder()
.latitude(40.05087)
.longitude(116.30142)
.name("百度大厦")
.description("百度大厦")
.coordinateType(CoordinateType.GCJ02)
.build();
BNRoutePlanNode eNode = new BNRoutePlanNode.Builder()
.latitude(39.90882)
.longitude(116.39750)
.name("北京天安门")
.description("北京天安门")
.coordinateType(CoordinateType.GCJ02)
.build();
List<BNRoutePlanNode> list = new ArrayList<>();
list.add(sNode);
list.add(eNode);
BaiduNaviManagerFactory.getRoutePlanManager().routeplan(list, IBNRoutePlanManager.RoutePlanPreference.ROUTE_PLAN_PREFERENCE_DEFAULT, null, new Handler(Looper.getMainLooper()) {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_START:
Toast.makeText(DemoMainActivity.this.gtApplicationContext(),
"算路开始", Toast.LENGTH_SHORT).show();
break;
case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_SUCCESS:
Toast.makeText(DemoMainActivity.this.getApplicationContext(),
"算路成功", Toast.LENGTH_SHORT).show();
break;
case IBNRoutePlanManager.MSG_NAVI_ROUTE_PLAN_FAILED:
Toast.makeText(DemoMainActivity.this.getApplicationContext(),
"算路失败", Toast.LENGTH_SHORT).show();
break;
default:
// nothing
break;
}
}
});
生命周期
路线规划成功后,就可以使用驾车页,驾车页依赖App的页面生命周期,开发时,只需要将百度导航SDK驾车页生命周期接口挂接到对应页面的生命周期接口即可,App页面既可以是Activity,也可以是Fragment等。生命周期相关方法在BaiduNaviManagerFactory.getRouteResultManager()中:
/** * 在Activity的onCreate() 或者 Fragment的onCreateView()中调用 */ void onCreate(Context context); /** * 在Activity的onResume() 或者 Fragment的onResume() 中调用 */ void onResume(); /** * 在Activity的onPause() 或者 Fragment的onPause() 中调用 */ void onPause(); /** * 在Activity的onDestroy() 或者 Fragment的onDestroy() 中调用 */ void onDestroy();
调用方法以OnCreate为例:
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// 获取路线规划UI
View view = BaiduNaviManagerFactory.getRouteResultManager().onCreate(getActivity());
return view;
}
选路
路线规划成功后通常情况下会出现3条路线,该接口可监听某条路线是否被点击,如果被点击可调用BaiduNaviManagerFactory.getRouteGuideManager().selectRoute(index)高亮并选中该条路线。
/**
* 路线点击事件监听
*/
void setRouteClickedListener(IRouteClickedListener listener);
/**
* 路线点击事件
*/
interface IRouteClickedListener {
/**
* 点击了第几条
* @param index
*/
void routeClicked(int index);
}
全览路线
BaiduNaviManagerFactory.getRouteResultManager().fullView();
开启专业导航
无需重新算路,直接跳转新页面调用专业导航生命周期即可,可参考demo。
// 返回true,代表可以跳转至专业导航 BaiduNaviManagerFactory.getRouteResultManager().startNavi(); }
获取Tab信息、路线详情和限行消息
/** * 获取3Tab信息和路线详情 */ Bundle getRouteInfo();
返回的bundle中数据如下,具体使用方法可以参考demo中DemoRouteResultFragment类。
Bundle bundle = BaiduNaviManagerFactory.getRouteResultManager().getRouteInfo();
if (bundle == null) {
return;
}
// 3Tab信息
mRoutePlanItems = bundle.getParcelableArrayList(BNaviCommonParams.BNRouteInfoKey.INFO_TAB);
// 每条路线的详细信息
mRouteDetails = bundle.getBundle(BNaviCommonParams.BNRouteInfoKey.INFO_ROUTE_DETAIL);
// 每条路线的坐标点
Bundle pointList = bundle.getBundle(BNaviCommonParams.BNRouteInfoKey.INFO_ROUTE_POINT);
if (pointList != null) {
ArrayList<BNPoint> bnPoints0 = pointList.getParcelableArrayList("0");
ArrayList<BNPoint> bnPoints1 = pointList.getParcelableArrayList("1");
ArrayList<BNPoint> bnPoints2 = pointList.getParcelableArrayList("2");
}
驾车页设置
驾车页设置BaiduNaviManagerFactory.getRouteResultSettingManager()接口如下:
/** * 设置全览路线边距 * @param left * @param top * @param right * @param bottom */ void setRouteMargin(int left, int top, int right, int bottom);