baiduNavigation 插件封装了百度导航的 sdk,支持语音导航功能。用户可自行选择路线类型。开发者只需输入起点终点经纬度即可轻松集成百度导航功能,本插件是由第三方插件开发者提供,使用本插件需在线应用打包安装包或自定义 loader 使用。
不能同时添加的插件:maketionCardReader, weChatCamera,bmLocation,baiduPanorama
插件使用攻略
一 申请导航的AK
使用百度地图相关 SDK,需要先去百度地图开放平台申请注册开发者账号,然后在此账号内创建app,获取 ak。
二 申请语音播报的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_tts_appid" value="100568" />
<param name="android_tts_appkey" value="" />
<param name="android_tts_appsecret" value="" />
<param name="android_tts_authsn" value="" />
<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>
另外Android 需要将以下代码拷贝到config.xml中,其中的value值替换成你的appKey即可
<meta-data name="com.baidu.lbsapi.API_KEY" value="your app key"/>
字段描述:
1、ios_api_key:iOS版本的apiKey
2、android_tts_appid:android 平台上语音播报的tts appid
3、ios_tts_appid & android_tts_appid:ios & Android 平台上语音播报的tts appid
4、ios_tts_secret & android_tts_appsecret:ios & Android 平台上语音播报的tts Secret
5、ios_tts_apikey & android_tts_appkey: ios & Android 平台上语音播报的tts apikey
6、android_tts_authsn:Android TTS sn授权码
注意:使用本插件需配置 config.xml 文件 location 字段,获取后台定位权限。audio 字段,获取后台播报功能。
配置实例:
<preference name="backgroundMode" value="audio | location"/>
在 iOS 平台上必须申请开启定位功能才能正常使用导航功能,应用打包时勾选输入相关提示文字即可。
重要:为进一步采取加强对最终用户个人信息的安全保护措施,从地图SDK v7.5.0版本起,请开发者务必确保调用SDK任何接口前先调用隐私合规接口setAgreePrivacy,否则可能会无法正常使用相关功能。
是否同意隐私政策
setAgreePrivacy({params})
isAgree:
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.setAgreePrivacy({
isAgree:true
})
iOS系统,Android系统
可提供的1.1.1及更高版本
开始导航
start({params}, callback(ret, err))
start:
{
position: { //(可选项)JSON对象;起点经纬度(百度坐标系),可与 address 配合不传
lon: , //数字类型;起点经度
lat: //数字类型;起点纬度
} ,
title: , //(可选项)字符串类型;起点描述信息
address: //(可选项)字符串类型;起点地址信息,可与 position 配合不传
}
goBy:
[{
position: { //(可选项)JSON对象;途经点经纬度(百度坐标系),可与 address 配合不传
lon: , //数字类型;途经点经度
lat: //数字类型;途经点纬度
},
title: , //(可选项)字符串类型;途经点描述信息
address: //(可选项)字符串类型;途经点地址信息,可与 position 配合不传
}]
end:
{
position: { //(可选项)JSON对象;终点经纬度(百度坐标系),可与 address 配合不传
lon: , //数字类型;终点经度
lat: //数字类型;终点纬度
} ,
title: , //(可选项)字符串类型;终点描述信息
address: //(可选项)字符串类型;终点地址信息,可与 position 配合不传
}
routeMode:
showConditionBar
ret:
{
status: //布尔类型:导航成功状态值,true|false
}
err:
{
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及更高版本
设置自定义图层数据
注意:iOS1.1.5及以上版本不在支持此接口
注:android在打开导航页面之前调用此接口,进入导航页面后自动显示图层,开发者无需在调用显示的接口 iOS只有掉用overlayShow接口设置show为true才会显示
setItemOverlay({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及更高版本
注意:iOS1.1.5及以上版本不在支持此接口
更新自定义图层数据
updateItemOverlay({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及更高版本
注意:iOS1.1.5及以上版本不在支持此接口
删除某个路线图层
removeOneItem({params})
name:
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.removeOneItem({
name:'111'
})
iOS系统,Android系统
可提供的1.1.1及更高版本
注意:iOS1.1.5及以上版本不在支持此接口
显示或隐藏自定义图层
overlayShow({params})
show:
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.overlayShow({
show:true
})
iOS系统,Android系统
可提供的1.1.1及更高版本
注意:iOS1.1.5及以上版本不在支持此接口
清除自定义图层数据
clearItemOverlay()
var baiduNavigation = api.require('baiduNavigation');
baiduNavigation.clearItemOverlay()
iOS系统,Android系统
可提供的1.1.1及更高版本