浏览器版本低!无法浏览完整内容,建议升级或更换浏览器。

文档全面上新

更科技的视觉体验,更高效的页面结构,快前往体验吧!

体验新版
更新时间:2020-06-23
室内导航简介

自V5.3.0起,新增室内步行导航功能。

下载开发包并配置开发环境

开发包的下载

注意:

1. 步骑行导航的开发包与普通地图服务的开发包下载时区别。

2. 将解压后的开发包中assets目录下的png文件拷贝到您的项目的assets目录下。

配置AndroidManifest.xml文件
加入如下权限使用声明
<!-- 获取访问手机振动器权限,用于导航过程中的震动提示 -->
<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() {

    @Override
    public void engineInitSuccess() {
        //引擎初始化成功的回调
        routePlanWithRouteNode ();
    }

    @Override
    public void engineInitFail() {
        //引擎初始化失败的回调
    }
});

1构造WalkNaviLaunchParam

示例代码如下:

//起终点位置
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() {
    @Override
    public void onRoutePlanStart() {
        //开始算路的回调
    }

    @Override
    public void onRoutePlanSuccess() {
        //算路成功
        naviCalcRoute(0);
    }

    @Override
    public void onRoutePlanFail(WalkRoutePlanError walkRoutePlanError) {
        //算路失败的回调
    }
});


//导航引擎算路
private void naviCalcRoute(int routeIndex) {
        WalkNavigateHelper.getInstance().naviCalcRoute(routeIndex, new IWNaviCalcRouteListener() {
            @Override
            public void onNaviCalcRouteSuccess() {

                Intent intent = new Intent();
                intent.setClass(BNaviMainActivity.this, WNaviGuideActivity.class);
                startActivity(intent);
            }

            @Override
            public void onNaviCalcRouteFail(WalkRoutePlanError error) {
                Log.d(TAG, "WalkNavi naviCalcRoute fail");
            }
        });
    }

开始导航
1新建诱导Activity,创建诱导View,发起导航

示例代码如下:

//获取WalkNavigateHelper实例
mNaviHelper = WalkNavigateHelper.getInstance();
//获取诱导页面地图展示View
View view = mNaviHelper.onCreate(WNaviGuideActivity.this);
if (view != null) {
    setContentView(view);
}
mNaviHelper.startWalkNavi(WNaviGuideActivity.this);

2正确管理WalkNavigateHelper对象生命周期。
代码如下:
@Override
protected void onResume() {
    super.onResume();
    mNaviHelper.resume();
}

@Override
protected void onPause() {
    super.onPause();
    mNaviHelper.pause();
}

@Override
protected void onDestroy() {
    super.onDestroy();
    mNaviHelper.quit();
}

完成以上步骤,即可在您的应用中实现基本的室内步行导航功能。

导航状态信息

通过IWRouteGuidanceListener接口各种回调方法开发者可以对导航状态进行相应处理,主要包括导航开始、结束,导航过程中偏航、偏航结束,诱导信息(诱导图标、诱导信息、诱导类型、剩余时间、剩余距离、震动等)

示例代码如下:

mNaviHelper.setRouteGuidanceListener(this, new IWRouteGuidanceListener() {
    //诱导图标更新
    @Override
    public void onRouteGuideIconUpdate(Drawable drawable) {

    }

    //诱导类型枚举
    @Override
    public void onRouteGuideKind(RouteGuideKind routeGuideKind) {

    }
/**
 * 诱导信息
 * @param charSequence 第一行显示的信息,如“沿当前道路”
 * @param charSequence1  第二行显示的信息,比如“向东出发”,第二行信息也可能为空
 */
@Override
public void onRoadGuideTextUpdate(CharSequence charSequence, CharSequence charSequence1) {

}

//总的剩余距离
@Override
public void onRemainDistanceUpdate(CharSequence charSequence) {

}

//总的剩余时间
@Override
public void onRemainTimeUpdate(CharSequence charSequence) {

}

//GPS状态发生变化,来自诱导引擎的消息
@Override
public void onGpsStatusChange(CharSequence charSequence, Drawable drawable) {

}

//已经开始偏航
@Override
public void onRouteFarAway(CharSequence charSequence, Drawable drawable) {

}

//偏航规划中
@Override
public void onRoutePlanYawing(CharSequence charSequence, Drawable drawable) {

}
//重新算路成功
@Override
public void onReRouteComplete() {

}

//抵达目的地
@Override
public void onArriveDest() {

}

//震动
@Override
public void onVibrate() {

}

获取语音播报文本

SDK只提供导航过程中的文本输出,不包含语音播报功能,需要自行传入对应的语音回调,形成播报功能。建议使用百度语音识别服务SDK。 地址: 百度语音识别服务

设置播报监听,使用语音回调播报。

注:该接口需要在startWikeNavi方法之前调用。

示例代码如下:

mNaviHelper.setTTsPlayer(new IWTTSPlayer() {
    /**
     * 诱导文本回调
     * @param s 诱导文本
     * @param b 是否抢先播报
     * @return
     */
    @Override
    public 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.** { *; }

  • 文档根本没法用

  • 文档水平很差

  • 文档水平一般

  • 文档不错

  • 文档写的很好

如发现文档错误,或对此文档有更好的建议,请在下方反馈。问题咨询请前往反馈平台提交工单咨询。

提交反馈

拖动标注工具

添加矩形标注

添加箭头标注

完成

取消