示例代码:
bnrouteplannode snode =newbnrouteplannode.builder().latitude(40.05087).longitude(116.30142).name("百度大厦").description("百度大厦").coordinatetype(coordinatetype.gcj02).build();bnrouteplannode enode =newbnrouteplannode.builder().latitude(39.90882).longitude(116.39750).name("北京天安门").description("北京天安门").coordinatetype(coordinatetype.gcj02).build();list<bnrouteplannode> list =newarraylist<>();list.add(snode);list.add(enode);baidunavimanagerfactory.getrouteplanmanager().routeplan(list,ibnrouteplanmanager.routeplanpreference.route_plan_preference_default,null,newhandler(looper.getmainlooper()){@overridepublicvoidhandlemessage(message msg){switch(msg.what){caseibnrouteplanmanager.msg_navi_route_plan_start:toast.maketext(demomainactivity.this.gtapplicationcontext(),"算路开始",toast.length_short).show();break;caseibnrouteplanmanager.msg_navi_route_plan_success:toast.maketext(demomainactivity.this.getapplicationcontext(),"算路成功",toast.length_short).show();break;caseibnrouteplanmanager.msg_navi_route_plan_failed:toast.maketext(demomainactivity.this.getapplicationcontext(),"算路失败",toast.length_short).show();break;default:// nothingbreak;}}});
路线规划成功后,就可以使用驾车页,驾车页依赖app的页面生命周期,开发时,只需要将百度导航sdk驾车页生命周期接口挂接到对应页面的生命周期接口即可,app页面既可以是activity,也可以是fragment等。生命周期相关方法在baidunavimanagerfactory.getrouteresultmanager()中:
/*** 在activity的oncreate() 或者 fragment的oncreateview()中调用*/voidoncreate(context context);/*** 在activity的onresume() 或者 fragment的onresume() 中调用*/voidonresume();/*** 在activity的onpause() 或者 fragment的onpause() 中调用*/voidonpause();/*** 在activity的ondestroy() 或者 fragment的ondestroy() 中调用*/voidondestroy();
调用方法以oncreate为例:
@nullable@overridepublicviewoncreateview(@nonnulllayoutinflater inflater, @nullableviewgroup container, @nullablebundle savedinstancestate){// 获取路线规划uiview view =baidunavimanagerfactory.getrouteresultmanager().oncreate(getactivity());return view;}
路线规划成功后通常情况下会出现3条路线,该接口可监听某条路线是否被点击,如果被点击可调用baidunavimanagerfactory.getrouteguidemanager().selectroute(index)高亮并选中该条路线。
/*** 路线点击事件监听*/voidsetrouteclickedlistener(irouteclickedlistener listener);/*** 路线点击事件*/interfaceirouteclickedlistener{/*** 点击了第几条* @param index*/voidrouteclicked(int index);}
baidunavimanagerfactory.getrouteresultmanager().fullview();
无需重新算路,直接跳转新页面调用专业导航生命周期即可,可参考demo。
// 返回true,代表可以跳转至专业导航baidunavimanagerfactory.getrouteresultmanager().startnavi();}
/*** 获取3tab信息和路线详情*/bundlegetrouteinfo();
返回的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*/voidsetroutemargin(int left, int top, int right, int bottom);
上一篇
下一篇
本篇文章对您是否有帮助?