全部服务产品
开发者频道
定价
登录
步行导航
下载开发文档
步行导航简介

自v4.4.0起,新增步行导航功能,支持普通步行导航、步行AR导航、偏航纠正等导航功能。
自v5.0.0起,支持全球200多个国家和地区的步行导航,无需单独申请即可直接使用。
自V7.5.4起,地图SDK升级步行导航AR功能,优化AR步行导航可视化效果。
注:步行导航AR模式不支持手机横屏,升级后的AR步行导航支持Android 5.0以上的机型。

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

开发包的下载
注意: 1. 步骑行导航的开发包与普通地图服务的开发包下载时区别。
2. 将解压后的开发包中 assets 目录下的 png 文件拷贝到您的项目的 assets 目录下。

配置AndroidManifest.xml文件

加入如下权限使用声明

<!-- 这个权限用于访问GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 获取访问手机振动器权限,用于导航过程中的震动提示 -->
<uses-permission android:name="android.permission.VIBRATE"/>
<!-- 获取摄像头权限,用于AR步行导航 -->
<uses-permission android:name="android.permission.CAMERA" />
引擎初始化

使用步行导航前需要对步行导航引擎初始化。
示例代码如下:

// 获取导航控制类
// 引擎初始化
WalkNavigateHelper.getInstance().initNaviEngine(this, new IWEngineInitListener() {
@Override
public void engineInitSuccess() {
//引擎初始化成功的回调
routeWalkPlanWithParam();
}
@Override
public void engineInitFail() {
//引擎初始化失败的回调
}
});
发起算路
1. 构造WalkNaviLaunchParam

示例代码如下:

//起终点位置
startPt = new LatLng(40.047416,116.312143);
endPt = new LatLng(40.048424, 116.313513);
//构造WalkNaviLaunchParam
mWalkParam = new WalkNaviLaunchParam().startNodeInfo(startPt).endNodeInfo(endPt);
2. 发起算路
//发起算路
WalkNavigateHelper.getInstance().routePlanWithRouteNode(mWalkParam, new IWRoutePlanListener() {
@Override
public void onRoutePlanStart() {
//开始算路的回调
}
@Override
public void onRoutePlanSuccess() {
//算路成功
//跳转至诱导页面
Intent intent = new Intent(BNaviMainActivity.this, WNaviGuideActivity.class);
startActivity(intent);
}
@Override
public void onRoutePlanFail(WalkRoutePlanError walkRoutePlanError) {
//算路失败的回调
}
});
开始导航
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();
}

完成以上步骤,即可在您的应用中实现基本的步行导航功能,效果如图:

步行AR导航
1. 配置和申请Camera权限
AndroidManifest配置

使用AR步行导航,需要在AndroidManifest中配置Camera权限:

<uses-permission android:name="android.permission.CAMERA" />
申请Camera权限

使用AR步行导航,需要在步行诱导页面的Activity中添加Camera权限申请的回调函数

@Override
public void onRequestPermissionsResult(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);
} else if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_DENIED) {
Toast.makeText(this, "需要开启相机使用权限", Toast.LENGTH_SHORT).show();
}
}
}
2. 导航状态变化的回调

要实现普通导航与AR导航的切换,需要在onWalkNaviModeChange回调函数中调用mNaviHelper.switchWalkNaviMode方法。
示例代码如下:

mNaviHelper.setWalkNaviStatusListener(new IWNaviStatusListener() {
/**
* 普通步行导航模式和步行AR导航模式的切换
* @param i 导航模式
* @param walkNaviModeSwitchListener 步行导航模式切换的监听器
*/
@Override
public void onWalkNaviModeChange(int mode, WalkNaviModeSwitchListener walkNaviModeSwitchListener) {
mNaviHelper.switchWalkNaviMode(WNaviGuideActivity.this, mode, walkNaviModeSwitchListener);
}
@Override
public void onNaviExit() {
}
});

效果如图:

导航状态信息

通过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() {
}

上一篇

骑行导航

下一篇

室内步行导航

本篇文章对您是否有帮助?