自V5.3.0起,新增室内步行导航功能。
开发包的下载注意:
1. 步骑行导航的开发包与普通地图服务的开发包下载时区别。
2. 将解压后的开发包中assets目录下的png文件拷贝到您的项目的assets目录下。
加入如下权限使用声明
<!-- 获取访问手机振动器权限,用于导航过程中的震动提示 --><uses-permission android:name="android.permission.VIBRATE"/><!-- 获取摄像头权限,用于AR步行导航 --><uses-permission android:name="android.permission.CAMERA" /><!-- 获取允许应用程序更改Wi-Fi连接状态的权限,用于室内步行导航wifi定位 --><uses-permission android:name="android.Manifest.permission.CHANGE_WIFI_STATE"/><!-- 获取设备Wi-Fi状态的权限,用于室内步行导航wifi定位 --><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
使用室内步行导航前需要对步行导航引擎初始化。 示例代码如下:
// 获取导航控制类// 引擎初始化WalkNavigateHelper.getInstance().initNaviEngine(this, new IWEngineInitListener() {@Overridepublic void engineInitSuccess() {//引擎初始化成功的回调routePlanWithRouteNode ();}@Overridepublic void engineInitFail() {//引擎初始化失败的回调}});
示例代码如下:
//起终点位置startPt = new LatLng(40.056015,116.3078);// 百度大厦WalkRouteNodeInfo walkStartNode = new WalkRouteNodeInfo();walkStartNode.setKeyword("百度大厦");walkStartNode.setLocation(startPt);walkStartNode.setType(RouteNodeType.KEYWORD);walkStartNode.setCitycode(131)endPt = new LatLng(40.035919,116.339863);WalkRouteNodeInfo walkEndNode = new WalkRouteNodeInfo();walkEndNode.setLocation(endPt);walkEndNode.setType(RouteNodeType.KEYWORD);walkEndNode.setKeyword("麻辣诱惑(五彩城店) ");walkEndNode.setBuildingID("1260176407175102463");walkEndNode.setFloorID("F4");walkEndNode.setCitycode(131);walkParam = new WalkNaviLaunchParam().startNodeInfo(walkStartNode).endNodeInfo(walkEndNode);//发起路线规划WalkNavigateHelper.getInstance().routePlanWithRouteNode(mParam, new IWRoutePlanListener() {@Overridepublic void onRoutePlanStart() {//开始算路的回调}@Overridepublic void onRoutePlanSuccess() {//算路成功naviCalcRoute(0);}@Overridepublic void onRoutePlanFail(WalkRoutePlanError walkRoutePlanError) {//算路失败的回调}});//导航引擎算路private void naviCalcRoute(int routeIndex) {WalkNavigateHelper.getInstance().naviCalcRoute(routeIndex, new IWNaviCalcRouteListener() {@Overridepublic void onNaviCalcRouteSuccess() {Intent intent = new Intent();intent.setClass(BNaviMainActivity.this, WNaviGuideActivity.class);startActivity(intent);}@Overridepublic void onNaviCalcRouteFail(WalkRoutePlanError error) {Log.d(TAG, "WalkNavi naviCalcRoute fail");}});}
示例代码如下:
//获取WalkNavigateHelper实例mNaviHelper = WalkNavigateHelper.getInstance();//获取诱导页面地图展示ViewView view = mNaviHelper.onCreate(WNaviGuideActivity.this);if (view != null) {setContentView(view);}mNaviHelper.startWalkNavi(WNaviGuideActivity.this);
代码如下:
@Overrideprotected void onResume() {super.onResume();mNaviHelper.resume();}@Overrideprotected void onPause() {super.onPause();mNaviHelper.pause();}@Overrideprotected void onDestroy() {super.onDestroy();mNaviHelper.quit();}
完成以上步骤,即可在您的应用中实现基本的室内步行导航功能。
通过IWRouteGuidanceListener接口各种回调方法开发者可以对导航状态进行相应处理,主要包括导航开始、结束,导航过程中偏航、偏航结束,诱导信息(诱导图标、诱导信息、诱导类型、剩余时间、剩余距离、震动等)
示例代码如下:
mNaviHelper.setRouteGuidanceListener(this, new IWRouteGuidanceListener() {//诱导图标更新@Overridepublic void onRouteGuideIconUpdate(Drawable drawable) {}//诱导类型枚举@Overridepublic void onRouteGuideKind(RouteGuideKind routeGuideKind) {}/*** 诱导信息* @param charSequence 第一行显示的信息,如“沿当前道路”* @param charSequence1 第二行显示的信息,比如“向东出发”,第二行信息也可能为空*/@Overridepublic void onRoadGuideTextUpdate(CharSequence charSequence, CharSequence charSequence1) {}//总的剩余距离@Overridepublic void onRemainDistanceUpdate(CharSequence charSequence) {}//总的剩余时间@Overridepublic void onRemainTimeUpdate(CharSequence charSequence) {}//GPS状态发生变化,来自诱导引擎的消息@Overridepublic void onGpsStatusChange(CharSequence charSequence, Drawable drawable) {}//已经开始偏航@Overridepublic void onRouteFarAway(CharSequence charSequence, Drawable drawable) {}//偏航规划中@Overridepublic void onRoutePlanYawing(CharSequence charSequence, Drawable drawable) {}//重新算路成功@Overridepublic void onReRouteComplete() {}//抵达目的地@Overridepublic void onArriveDest() {}//震动@Overridepublic void onVibrate() {}
SDK提供导航过程中的文本输出,开发者可自行传入对应的语音回调,形成播报功能。建议使用百度语音识别服务SDK。 地址:百度语音识别服务设置播报监听,使用语音回调播报。
注:该接口需要在startWikeNavi方法之前调用。
示例代码如下:
mNaviHelper.setTTsPlayer(new IWTTSPlayer() {/*** 诱导文本回调* @param s 诱导文本* @param b 是否抢先播报* @return*/@Overridepublic int playTTSText(String s, boolean b) {return 0;}});
-keep class com.baidu.** {*;}-keep class mapsdkvi.com.** {*;}-dontwarn com.baidu.**-keep class com.google.protobuf.micro.** { *; }-keep class com.baidu.entity.pb.** { *; }
上一篇
下一篇
本篇文章对您是否有帮助?