自v4.4.0起,新增步行导航功能,支持普通步行导航、步行ar导航、偏航纠正等导航功能。
自v5.0.0起,支持全球200多个国家和地区的步行导航,无需单独申请即可直接使用。
自v7.5.4起,地图sdk升级步行导航ar功能,优化ar步行导航可视化效果。
注:步行导航ar模式不支持手机横屏,升级后的ar步行导航支持android 5.0以上的机型。
开发包的下载
注意: 1. 步骑行导航的开发包与普通地图服务的开发包下载时区别。
2. 将解压后的开发包中 assets 目录下的 png 文件拷贝到您的项目的 assets 目录下。
加入如下权限使用声明
<uses-permissionandroid:name="android.permission.access_fine_location"/><uses-permissionandroid:name="android.permission.vibrate"/><uses-permissionandroid:name="android.permission.camera"/>
使用步行导航前需要对步行导航引擎初始化。
示例代码如下:
// 获取导航控制类// 引擎初始化walknavigatehelper.getinstance().initnaviengine(this,newiwengineinitlistener(){@overridepublicvoidengineinitsuccess(){//引擎初始化成功的回调routewalkplanwithparam();}@overridepublicvoidengineinitfail(){//引擎初始化失败的回调}});
示例代码如下:
//起终点位置startpt =newlatlng(40.047416,116.312143);endpt =newlatlng(40.048424,116.313513);//构造walknavilaunchparammparam =newwalknavilaunchparam().stpt(startpt).endpt(endpt);
//发起算路walknavigatehelper.getinstance().routeplanwithparams(mparam,newiwrouteplanlistener(){@overridepublicvoidonrouteplanstart(){//开始算路的回调}@overridepublicvoidonrouteplansuccess(){//算路成功//跳转至诱导页面intent intent =newintent(bnavimainactivity.this,wnaviguideactivity.class);startactivity(intent);}@overridepublicvoidonrouteplanfail(walkrouteplanerror walkrouteplanerror){//算路失败的回调}});
示例代码如下:
//获取walknavigatehelper实例mnavihelper =walknavigatehelper.getinstance();//获取诱导页面地图展示viewview view = mnavihelper.oncreate(wnaviguideactivity.this);if(view !=null){setcontentview(view);}mnavihelper.startwalknavi(wnaviguideactivity.this);
代码如下:
@overrideprotectedvoidonresume(){super.onresume();mnavihelper.resume();}@overrideprotectedvoidonpause(){super.onpause();mnavihelper.pause();}@overrideprotectedvoidondestroy(){super.ondestroy();mnavihelper.quit();}
完成以上步骤,即可在您的应用中实现基本的步行导航功能,效果如图:
使用ar步行导航,需要在androidmanifest中配置camera权限:
<uses-permissionandroid:name="android.permission.camera"/>
使用ar步行导航,需要在步行诱导页面的activity中添加camera权限申请的回调函数
@overridepublicvoidonrequestpermissionsresult(int requestcode,string[] permissions, int[] grantresults){super.onrequestpermissionsresult(requestcode, permissions, grantresults);if(requestcode ==arcameraview.walk_ar_permission){if(grantresults.length>0&& grantresults[0]==packagemanager.permission_granted){mnavihelper.startcameraandsetmapview(wnaviguideactivity.this);}elseif(grantresults.length>0&& grantresults[0]==packagemanager.permission_denied){toast.maketext(this,"需要开启相机使用权限",toast.length_short).show();}}}
要实现普通导航与ar导航的切换,需要在onwalknavimodechange回调函数中调用mnavihelper.switchwalknavimode方法。
示例代码如下:
mnavihelper.setwalknavistatuslistener(newiwnavistatuslistener(){/*** 普通步行导航模式和步行ar导航模式的切换* @param i 导航模式* @param walknavimodeswitchlistener 步行导航模式切换的监听器*/@overridepublicvoidonwalknavimodechange(int mode,walknavimodeswitchlistener walknavimodeswitchlistener){mnavihelper.switchwalknavimode(wnaviguideactivity.this, mode, walknavimodeswitchlistener);}@overridepublicvoidonnaviexit(){}});
效果如图:
通过iwrouteguidancelistener接口各种回调方法开发者可以对导航状态进行相应处理,主要包括导航开始、结束,导航过程中偏航、偏航结束, 诱导信息(诱导图标、诱导信息、诱导类型、剩余时间、剩余距离、震动等)
示例代码如下:
mnavihelper.setrouteguidancelistener(this,newiwrouteguidancelistener(){//诱导图标更新@overridepublicvoidonrouteguideiconupdate(drawable drawable){}//诱导类型枚举@overridepublicvoidonrouteguidekind(routeguidekind routeguidekind){}/*** 诱导信息* @param charsequence 第一行显示的信息,如“沿当前道路”* @param charsequence1 第二行显示的信息,比如“向东出发”,第二行信息也可能为空*/@overridepublicvoidonroadguidetextupdate(charsequence charsequence,charsequence charsequence1){}//总的剩余距离@overridepublicvoidonremaindistanceupdate(charsequence charsequence){}//总的剩余时间@overridepublicvoidonremaintimeupdate(charsequence charsequence){}//gps状态发生变化,来自诱导引擎的消息@overridepublicvoidongpsstatuschange(charsequence charsequence,drawable drawable){}//已经开始偏航@overridepublicvoidonroutefaraway(charsequence charsequence,drawable drawable){}//偏航规划中@overridepublicvoidonrouteplanyawing(charsequence charsequence,drawable drawable){}//重新算路成功@overridepublicvoidonreroutecomplete(){}//抵达目的地@overridepublicvoidonarrivedest(){}//震动@overridepublicvoidonvibrate(){}
sdk提供导航过程中的文本输出,开发者可自行传入对应的语音回调,形成播报功能。建议使用百度语音识别服务sdk。 地址:设置播报监听,使用语音回调播报。
注意:该接口需要在startwikenavi方法之前调用。
示例代码如下:
mnavihelper.setttsplayer(newiwttsplayer(){/*** 诱导文本回调* @param s 诱导文本* @param b 是否抢先播报* @return*/@overridepublic int playttstext(string s, boolean b){return0;}});
上一篇
下一篇
本篇文章对您是否有帮助?