百度导航驾车页提供了一套接口和示例UI,开发者可根据Demo中的驾车页页面UI进行开发
1生命周期
路线规划成功后,就可以使用驾车页BaiduNaviManagerFactory.getRouteResultManager(),驾车页依赖App的页面生命周期,开发时,只需要将百度导航SDK驾车页生命周期接口挂接到对应页面的生命周期接口即可,App页面既可以是Activity,也可以是Fragment等。生命周期如下
/** * 在{@linkplain Activity#onCreate()}} 或者 {@linkplain Fragment#onCreateView()}} 中调用 */ void onCreate(Context context); /** * 在{@linkplain Activity#onResume()}} 或者 {@linkplain Fragment#onResume()}} 中调用 */ void onResume(); /** * 在{@linkplain Activity#onPause()}} 或者 {@linkplain Fragment#onPause()}} 中调用 */ void onPause(); /** * 在{@linkplain Activity#onDestroy()}} 或者 {@linkplain Fragment#onDestroy()}} 中调用 */ void onDestroy();
2其他接口说明
1.全览路线
/** * 全览当前路线 */ void fullView();
2.开启专业导航
无需重新算路,直接跳转新页面调用专业导航生命周期即可,可参考demo。
/** * 开启专业导航 * * @return 返回true,代表可以跳转至专业导航 */ boolean startNavi();
3.路线点击事件
路线规划成功后通常情况下会出现3条路线,该接口可监听某条路线是否被点击,如果被点击可调用BaiduNaviManagerFactory.getRouteGuideManager().selectRoute(index)高亮并选中该条路线。
/** * 路线点击事件监听 */ void setRouteClickedListener(IRouteClickedListener listener); /** * 路线点击事件 */ interface IRouteClickedListener { /** * 点击了第几条 * @param index */ void routeClicked(int index);
4.获取3Tab信息、路线详情和限行消息
/** * 获取3Tab信息和路线详情 */ Bundle getRouteInfo();
返回的bundle中数据如下,具体使用方法可以参考demo。
// 3Tab信息 ArrayList<BNRoutePlanItem> mRoutePlanItems = bundle.getParcelableArrayList(BNaviCommonParams.BNRouteInfoKey.INFO_TAB); // 路线详情 Bundle mRouteDetails = bundle.getBundle(BNaviCommonParams.BNRouteInfoKey.INFO_ROUTE_DETAIL); // 第一条路线的路线详情 ArrayList<BNRouteDetail> detail0 = mRouteDetails.<BNRouteDetail>getParcelableArrayList("0"); // 第二条路线的路线详情 ArrayList<BNRouteDetail> detail1 = mRouteDetails.<BNRouteDetail>getParcelableArrayList("1"); // 第三条路线的路线详情 ArrayList<BNRouteDetail> detail2 = mRouteDetails.<BNRouteDetail>getParcelableArrayList("2"); // 限行消息 ArrayList<String> limitInfos = bundle.getStringArrayList(BNaviCommonParams.BNRouteInfoKey.TRAFFIC_LIMIT_INFO); if (limitInfos != null) { for (int i = 0; i < limitInfos.size(); i++) { String[] arr = limitInfos.get(i).split(","); Log.e("TAG", "第" + arr[0] + "条路线限行消息:" + arr[1]); } }
3驾车页设置
驾车页设置BaiduNaviManagerFactory.getRouteResultSettingManager()接口如下
/** * 设置实时路况是否开启 */ void setRealRoadCondition(Context context); /** * 获取实时路况是否开启 */ boolean isRealRoadConditionOpen(); /** * 设置全览路线边距 * @param left * @param top * @param right * @param bottom */ void setRouteMargin(int left, int top, int right, int bottom);