路线规划成功后可以使用专业导航服务,专业导航服务依赖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() {@Overridepublic int getViewHeight() {return 100;}@Overridepublic 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() {@Overridepublic 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() {@Overridepublic int getViewHeight() {return 100;}@Overridepublic 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表示模拟导航,默认是truebundle.putBoolean(BNaviCommonParams.ProGuideKey.IS_REALNAVI, false);BNGuideConfig config = new BNGuideConfig.Builder().params(params).build();BaiduNaviManagerFactory.getRouteGuideManager().onCreate(this, config);
上一篇
下一篇
本篇文章对您是否有帮助?