baiduNavigation
来自于:开发者立即使用
start setItemOverlay updateItemOverlay removeOneItem overlayShow clearItemOverlay
概述
baiduNavigation 模块封装了百度导航的 sdk,支持语音导航功能。用户可自行选择路线类型。开发者只需输入起点终点经纬度即可轻松集成百度导航功能,本模块是由第三方模块开发者提供,使用本模块需在线云编译安装包或自定义 loader 使用。
不能同时添加的模块:maketionCardReader, weChatCamera,bmLocation,baiduPanorama
模块使用攻略
一 申请导航的AK
使用百度地图相关 SDK,需要先去百度地图开放平台申请注册开发者账号,然后在此账号内创建app,获取 ak。
详情参考百度开放平台接入指南文档,与 bMap 配置相似。
二 申请语音播报的appid
最新版本的百度导航开放 SDK 内置了百度 TTS 语音播报功能,需要对应用进行授权验证才能够使用,因此使用本模块之前需要注册应用相关信息
android 平台注册方法参考 语音播报 Android 导航 SDK
iOS 平台注册方法参考 语音播报 iOS 导航 SDK
三 配置 config.xml
文件
在集成此模块之前需先配置 config 文件。
在 config 里添加如下字段:
名称:baiduNavigation
参数:android_api_key、ios_api_key、android_tts_appid、ios_tts_appid
描述:百度开放平台的安全码获取需要区分移动平台,意味着如果你的同一个 App 需要同时支持 iOS 和Android 平台,那么,您必须为这两个平台单独申请 apiKey,即同一个 App 申请两个 apiKey,并将这两个 apiKey 同时配置在 config 文件中。
配置示例:
<feature name="baiduNavigation">
<param name="android_api_key" value="2kyNa3maO5mXcASnUe5EwVoM" />
<param name="android_tts_appid" value="100568" />
<param name="ios_api_key" value="IvbnWLuuTnbmjOOg17zpbe0O" />
<param name="ios_tts_appid" value="100567" />
<param name="ios_tts_secret" value="*****100567*****" />
<param name="ios_tts_apikey" value="IvbnWLuuTnbmjOOg17zpbe0O" />
</feature>
字段描述:
1、android_api_key:android版本的apiKey
2、ios_api_key:iOS版本的apiKey
3、android_tts_appid:android 平台上语音播报的tts appid
4、ios_tts_appid:ios平台上语音播报的tts appid
4、ios_tts_secret平台上语音播报的tts Secret
4、ios_tts_apikey平台上语音播报的tts apikey
注意:使用本模块需配置 config.xml 文件 location 字段,获取后台定位权限。audio 字段,获取后台播报功能。
配置实例:
<preference name="backgroundMode" value="audio | location"/>
在 iOS 平台上必须申请开启定位功能才能正常使用导航功能,云编译时勾选输入相关提示文字即可。
注意事项:
- 1、Android从1.1.0版本开始,需用升级环境编译
- 2、由于百度导航sdk暂未提供64位的so文件,所以上架google play可能会受影响;国内应用商店暂不受影响
start
开始导航
start({params}, callback(ret, err))
params
start:
- 类型:JSON 对象
- 描述:起点信息
- 内部字段:
{
position: { //(可选项)JSON对象;起点经纬度(百度坐标系),可与 address 配合不传
lon: , //数字类型;起点经度
lat: //数字类型;起点纬度
} ,
title: , //(可选项)字符串类型;起点描述信息
address: //(可选项)字符串类型;起点地址信息,可与 position 配合不传
}
goBy:
- 类型:数组
- 描述:(可选项)途经点位置信息,可输入1-3个途经点
- 注:Android从1.1.0版本开始,不支持此参数
- 内部字段:
[{
position: { //(可选项)JSON对象;途经点经纬度(百度坐标系),可与 address 配合不传
lon: , //数字类型;途经点经度
lat: //数字类型;途经点纬度
},
title: , //(可选项)字符串类型;途经点描述信息
address: //(可选项)字符串类型;途经点地址信息,可与 position 配合不传
}]
end:
- 类型:JSON 对象
- 描述:终点信息
- 内部字段:
{
position: { //(可选项)JSON对象;终点经纬度(百度坐标系),可与 address 配合不传
lon: , //数字类型;终点经度
lat: //数字类型;终点纬度
} ,
title: , //(可选项)字符串类型;终点描述信息
address: //(可选项)字符串类型;终点地址信息,可与 position 配合不传
}
routeMode:
- 类型:字符串
- 描述:导航路线类型,取值范围见路线类型,可为空
- 默认值:recommend
取值范围:
showConditionBar
- 类型:布尔类型
- 描述:是否显示导航界面上小窗口地图,此参数也可在导航界面的设置中去设置,(ios不支持)
- 默认值:true
callback(ret, err)
ret:
- 类型:JSON 对象
- 内部字段:
{
status: //布尔类型:导航成功状态值,true|false
}
err:
- 类型:JSON 对象
- 内部字段:
{
msg: , //字符串类型;错误描述
code: //数字类型;错误码,取值范围如下:
//###iOS
//- 1 :获取地理位置失败
//- 2 :定位服务未开启
//- 3 :线路取消
//- 4 :退出导航
//- 5 :退出导航声明页面
//###android
//- 1 :验证权限失败
//- 2 :导航引擎初始化失败
//- 3 :导航失败
//- 4 :退出导航界面
}
示例代码
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.start({
start: { // 起点信息.
position: { // 经纬度,与address配合可为空
lon: 112.47723797622677, // 经度.
lat: 34.556480000000015 // 纬度.
},
title: "中国四大石窟之一", // 描述信息
address: "龙门石窟" // 地址信息,与position配合为空
},
goBy: [{ // 途经点位置信息.
position: { // 经纬度,与address配合可为空
lon: 109.77539000000002, // 经度
lat: 33.43144 // 纬度.
},
title: "释源", // 描述信息
address: "白马寺" // 地址信息,与position配合为空
}],
end: { // 终点信息.
position: { // 经纬度,与address配合可为空
lon: 111.57062599999995, // 经度
lat: 33.784214 // 纬度
},
title: "龙蛇之窟", // 描述信息
address: "鸡冠洞" // 地址信息,与position配合为空
}
}, function(ret, err) {
if (ret.status) {
api.alert({
title: "提示",
msg: '导航成功'
});
} else {
var msg = "未知错误";
if (1 == err.code) {
msg = "获取地理位置失败";
}
if (2 == err.code) {
msg = "定位服务未开启";
}
if (3 == err.code) {
msg = "线路取消";
}
if (4 == err.code) {
msg = "退出导航";
}
if (5 == err.code) {
msg = "退出导航声明页面";
}
api.alert({
title: "导航出错",
msg: msg
});
}
});
可用性
iOS系统,Android系统
可提供的1.0.0及更高版本
setItemOverlay
设置自定义图层数据
注:android在打开导航页面之前调用此接口,进入导航页面后自动显示图层,开发者无需在调用显示的接口 iOS只有掉用overlayShow接口设置show为true才会显示
setItemOverlay({params})
params
items:
- 类型:数组类型
- 描述:图层数据
- 内部字段:
[{
position: { JSON对象;图层数据经纬度(百度坐标系)
lon: , //数字类型;图层数据经度
lat: //数字类型;图层数据纬度
},
image: , //字符串类型;图层展示图片,仅支持本地路径(widget,fs)
name: //字符串类型;图片的名字,item的唯一标识符,每个item的name必须唯一
align: { //(可选项)JSON对象;图片的质心方向的偏移(android不支持)
xAlign: , //数字类型;xAlign 图片的质心x方向的偏移 (0 - 1),比如,xAlign和yAlign均为0.5,表示图片的中心在pos的位置;默认:0
yAlign: //数字类型;yAlign 图片的质心y方向的偏移 (0 - 1),比如,xAlign和yAlign均为0.5,表示图片的中心在pos的位置;默认:0
},
}]
示例代码
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.setItemOverlay({
items:[{
image:'widget://image/111.jpg',
position:{
lon : 112.07539000000002, // 经度
lat : 34.43144 // 纬度.
},
name:'111'
},{
image:'widget://image/222.jpg',
position:{
lon : 112.37539000000002, // 经度
lat : 34.43144 // 纬度.
},
name:'222'
}]
})
可用性
iOS系统,Android系统
可提供的1.1.1及更高版本
updateItemOverlay
更新自定义图层数据
updateItemOverlay({params})
params
items:
- 类型:数组类型
- 描述:图层数据
- 内部字段:
[{
position: { JSON对象;图层数据经纬度(百度坐标系)
lon: , //数字类型;图层数据经度
lat: //数字类型;图层数据纬度
},
image: , //字符串类型;图层展示图片,仅支持本地路径(widger,fs)
name: //字符串类型;图片的名字,item的唯一标识符,每个item的name必须唯一
align: { //(可选项)JSON对象;图片的质心方向的偏移(android不支持)
xAlign: , //数字类型;xAlign 图片的质心x方向的偏移 (0 - 1),比如,xAlign和yAlign均为0.5,表示图片的中心在pos的位置;默认:0
yAlign: //数字类型;yAlign 图片的质心y方向的偏移 (0 - 1),比如,xAlign和yAlign均为0.5,表示图片的中心在pos的位置;默认:0
},
}]
示例代码
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.updateItemOverlay({
items:[{
image:'widget://image/666.jpg',
position:{
lon : 112.57539000000002, // 经度
lat : 34.43144 // 纬度.
},
name:'111'
},{
image:'widget://image/777.jpg',
position:{
lon : 112.27539000000002, // 经度
lat : 34.43144 // 纬度.
},
name:'222'
}]
})
可用性
iOS系统,Android系统
可提供的1.1.1及更高版本
removeOneItem
删除某个路线图层
removeOneItem({params})
params
name:
- 类型:字符类型
- 描述:图片的名字
示例代码
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.removeOneItem({
name:'111'
})
可用性
iOS系统,Android系统
可提供的1.1.1及更高版本
overlayShow
显示或隐藏自定义图层
overlayShow({params})
params
show:
- 类型:布尔类型
- 描述:是否显示(可选项)
- 默认:true
示例代码
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.overlayShow({
show:true
})
可用性
iOS系统,Android系统
可提供的1.1.1及更高版本
clearItemOverlay
清除自定义图层数据
clearItemOverlay()
示例代码
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.clearItemOverlay()
可用性
iOS系统,Android系统
可提供的1.1.1及更高版本