浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。
实时导航与模拟导航
下载开发文档
生命周期

路线规划成功后可以使用专业导航服务,专业导航服务依赖App的页面生命周期,开发时,只需要将百度导航SDK专业导航生命周期接口挂接到对应页面的生命周期接口即可,App页面既可以是Activity,也可以是Fragment。生命周期如下:

/**
* 获取百度专业导航过程View对象,将其加入应用布局内即可显示导航过程.
*/
View onCreate(final FragmentActivity activity, final BNGuideConfig config);
/**
* 百度专业导航生命周期onStart,在{@linkplain Activity#onStart()} 或者 {@linkplain Fragment#onStart()} 中调用
*/
void onStart();
/**
* 百度专业导航生命周期onResume,在{@linkplain Activity#onResume()} 或者 {@linkplain Fragment#onResume()} 中调用
*/
void onResume();
/**
* 百度专业导航生命周期onPause,在{@linkplain Activity#onPause()} 或者 {@linkplain Fragment#onPause()} 中调用
*/
void onPause();
/**
* 百度专业导航生命周期onStop,在{@linkplain Activity#onStop()} 或者 {@linkplain Fragment#onStop()} 中调用
*/
void onStop();
/**
* 百度专业导航生命周期oonDestroy,在{@linkplain Activity#onDestroy()} 或者 {@linkplain Fragment#onDestroy()} 中调用
*
* @param isSwitchToLightNavi 在退出专业导航后是否切换到轻导航
*/
void onDestroy(boolean isSwitchToLightNavi);
主要接口和参数

专业导航onCreate方法BNGuideConfig参数

/**
* @param params 定制化导航参数
* @param aboveBottomView 添加工具箱上方自定义view
* @param bottomBarView 添加工具箱自定义view
* @param belowBottomView 添加最底部自定义view
*/
private BNGuideConfig(Bundle params,
IBNRouteGuideManager.NaviAddViewCallback aboveBottomView,
IBNRouteGuideManager.NaviAddViewCallback bottomBarView,
IBNRouteGuideManager.NaviAddViewCallback belowBottomView) {
this.params = params;
this.aboveBottomView = aboveBottomView;
this.bottomBarView = bottomBarView;
this.belowBottomView = belowBottomView;
}

其中NaviAddViewCallback参数表示可以在专业导航界面添加自定义view,Bundle可以传入一些参数来自定义导航。示例如下:

Bundle bundle = new Bundle();
bundle.putBoolean(BNaviCommonParams.ProGuideKey.ADD_MAP, false);
bundle.putBoolean(BNaviCommonParams.ProGuideKey.IS_SUPPORT_FULL_SCREEN, supportFullScreen());
BNGuideConfig config = new BNGuideConfig.Builder()
// 导航工具栏上方view
.addAboveBottomView(new IBNRouteGuideManager.NaviAddViewCallback() {
@Override
public int getViewHeight() {
return 100;
}
@Override
public View getAddedView() {
TextView textView = new TextView(BNDemoCustomGuideActivity.this);
textView.setBackgroundColor(Color.parseColor("#ffff00"));
textView.setText("导航工具栏上方自定义空间");
textView.setGravity(Gravity.CENTER);
textView.setTextColor(Color.parseColor("#000000"));
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 100);
textView.setLayoutParams(lp);
return textView;
}
})
// 导航工具栏view
.addBottomBarView(new IBNRouteGuideManager.NaviAddViewCallback() {
@Override
public View getAddedView() {
TextView textView = new TextView(BNDemoCustomGuideActivity.this);
textView.setBackgroundColor(Color.parseColor("#ff00ff"));
textView.setText("导航工具栏自定义空间");
textView.setGravity(Gravity.CENTER);
textView.setTextColor(Color.parseColor("#000000"));
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
textView.setLayoutParams(lp);
return textView;
}
})
// 导航工具栏下方view
.addBelowBottomView(new IBNRouteGuideManager.NaviAddViewCallback() {
@Override
public int getViewHeight() {
return 100;
}
@Override
public View getAddedView() {
TextView textView = new TextView(BNDemoCustomGuideActivity.this);
textView.setBackgroundColor(Color.parseColor("#00ffff"));
textView.setText("导航工具栏下方自定义空间");
textView.setGravity(Gravity.CENTER);
textView.setTextColor(Color.parseColor("#000000"));
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, 100);
textView.setLayoutParams(lp);
return textView;
}
})
.params(params)
.build();
BaiduNaviManagerFactory.getRouteGuideManager().onCreate(getActivity(), config);

导航中视图监听接口

/**
* 设置导航视图监听
* @param listener
*/
void setNaviViewListener(IBNaviViewListener listener);

导航中视图回调如下:

/**
* 诱导面板的点击事件
*/
public void onMainInfoPanCLick() {
}
/**
* 界面左上角转向操作的点击回调
*/
public void onNaviTurnClick() {
}
/**
* 全览按钮的点击回调
*/
public void onFullViewButtonClick(boolean show) {
}
/**
* 全览小窗口的点击
*/
public void onFullViewWindowClick(boolean show) {
}
/**
* 导航底部退出按钮点击后的回调接口
*/
public void onNaviBackClick() {
}
/**
* 底部中间部分点击事件
*/
public void onBottomBarClick(Action action) {
}
/**
* 底部设置按钮点击的回调接口
*/
public void onNaviSettingClick() {
}
/**
* 刷新按钮的回调接口
*/
public void onRefreshBtnClick() {
}
/**
* 地图缩放等级的回调
*/
public void onZoomLevelChange(int level) {
}
/**
* 地图点击的回调(国测局GCJ02坐标)
*/
public void onMapClicked(double x, double y) {
}
/**
* 移动地图的回调
*/
public void onMapMoved() {
}
/**
* 后台诱导悬浮窗的点击
*/
public void onFloatViewClicked() {
}

主辅路切换

/**
* 返回主辅路桥上下类型
*/
int getMainSideBridgeType();
/**
* 切换主辅路/高架桥
* @param type {@link BNaviCommonParams.BNMainSideBridge}
* @param listener 只会返回onSuccess/onFail
*/
void changeRouteByMainSideBridge(int type, ChangeRouteListener listener);

修改终点重算路

/**
* 导航中修改终点重新算路并导航
* @param newEndNode
* @return
*/
boolean resetEndNodeInNavi(BNRoutePlanNode newEndNode);

添加途经点

/**
* 添加途经点
*/
void addViaNodes(List<BNRoutePlanNode> nodes);
/**
* 设置最大途径点数量
*/
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(10)
模拟导航

与专业导航实现基本一致,区别在于导航的onCreate方法中传入需要模拟导航的参数。

Bundle bundle = new Bundle();
// IS_REALNAVI代表导航类型,true表示真实导航,false表示模拟导航,默认是true
bundle.putBoolean(BNaviCommonParams.ProGuideKey.IS_REALNAVI, false);
BNGuideConfig config = new BNGuideConfig.Builder()
.params(params)
.build();
BaiduNaviManagerFactory.getRouteGuideManager().onCreate(this, config);

上一篇

算路准确性

下一篇

智能巡航

本篇文章对您是否有帮助?