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 里添加如下字段:

  1. 名称:baiduNavigation
  2. 参数:android_api_keyios_api_keyandroid_tts_appidios_tts_appid
  3. 描述:百度开放平台的安全码获取需要区分移动平台,意味着如果你的同一个 App 需要同时支持 iOS Android 平台,那么,您必须为这两个平台单独申请 apiKey,即同一个 App 申请两个 apiKey,并将这两个 apiKey 同时配置在 config 文件中。

配置示例:

  1. <feature name="baiduNavigation">
  2. <param name="android_api_key" value="2kyNa3maO5mXcASnUe5EwVoM" />
  3. <param name="android_tts_appid" value="100568" />
  4. <param name="ios_api_key" value="IvbnWLuuTnbmjOOg17zpbe0O" />
  5. <param name="ios_tts_appid" value="100567" />
  6. <param name="ios_tts_secret" value="*****100567*****" />
  7. <param name="ios_tts_apikey" value="IvbnWLuuTnbmjOOg17zpbe0O" />
  8. </feature>

字段描述:

  1. 1android_api_keyandroid版本的apiKey
  2. 2ios_api_keyiOS版本的apiKey
  3. 3android_tts_appidandroid 平台上语音播报的tts appid
  4. 4ios_tts_appidios平台上语音播报的tts appid
  5. 4ios_tts_secret平台上语音播报的tts Secret
  6. 4ios_tts_apikey平台上语音播报的tts apikey

注意:使用本模块需配置 config.xml 文件 location 字段,获取后台定位权限。audio 字段,获取后台播报功能。

配置实例:

  1. <preference name="backgroundMode" value="audio | location"/>

在 iOS 平台上必须申请开启定位功能才能正常使用导航功能,云编译时勾选输入相关提示文字即可。

baiduNavigation - 图1

注意事项:

  • 1、Android从1.1.0版本开始,需用升级环境编译
  • 2、由于百度导航sdk暂未提供64位的so文件,所以上架google play可能会受影响;国内应用商店暂不受影响

start

开始导航

start({params}, callback(ret, err))

params

start:

  • 类型:JSON 对象
  • 描述:起点信息
  • 内部字段:
  1. {
  2. position: { //(可选项)JSON对象;起点经纬度(百度坐标系),可与 address 配合不传
  3. lon: , //数字类型;起点经度
  4. lat: //数字类型;起点纬度
  5. } ,
  6. title: , //(可选项)字符串类型;起点描述信息
  7. address: //(可选项)字符串类型;起点地址信息,可与 position 配合不传
  8. }

goBy:

  • 类型:数组
  • 描述:(可选项)途经点位置信息,可输入1-3个途经点
  • 注:Android从1.1.0版本开始,不支持此参数
  • 内部字段:
  1. [{
  2. position: { //(可选项)JSON对象;途经点经纬度(百度坐标系),可与 address 配合不传
  3. lon: , //数字类型;途经点经度
  4. lat: //数字类型;途经点纬度
  5. },
  6. title: , //(可选项)字符串类型;途经点描述信息
  7. address: //(可选项)字符串类型;途经点地址信息,可与 position 配合不传
  8. }]

end:

  • 类型:JSON 对象
  • 描述:终点信息
  • 内部字段:
  1. {
  2. position: { //(可选项)JSON对象;终点经纬度(百度坐标系),可与 address 配合不传
  3. lon: , //数字类型;终点经度
  4. lat: //数字类型;终点纬度
  5. } ,
  6. title: , //(可选项)字符串类型;终点描述信息
  7. address: //(可选项)字符串类型;终点地址信息,可与 position 配合不传
  8. }

routeMode:

  • 类型:字符串
  • 描述:导航路线类型,取值范围见路线类型,可为空
  • 默认值:recommend
  • 取值范围:

    • iOS专用类型(对android无效)

    • recommend : //推荐

    • highway : //高速优先
    • noHighway : //少走高速
    • android专用类型(对iOS无效)

    • min_time : //最短时间

    • min_dist : //最短距离
    • min_toll : //最少收费
    • avoid_trafficJam : //躲避拥堵

showConditionBar

  • 类型:布尔类型
  • 描述:是否显示导航界面上小窗口地图,此参数也可在导航界面的设置中去设置,(ios不支持)
  • 默认值:true

callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. status: //布尔类型:导航成功状态值,true|false
  3. }

err:

  • 类型:JSON 对象
  • 内部字段:
  1. {
  2. msg: , //字符串类型;错误描述
  3. code: //数字类型;错误码,取值范围如下:
  4. //###iOS
  5. //- 1 :获取地理位置失败
  6. //- 2 :定位服务未开启
  7. //- 3 :线路取消
  8. //- 4 :退出导航
  9. //- 5 :退出导航声明页面
  10. //###android
  11. //- 1 :验证权限失败
  12. //- 2 :导航引擎初始化失败
  13. //- 3 :导航失败
  14. //- 4 :退出导航界面
  15. }

示例代码

  1. var baiduNavigation = api.require('baiduNavigation');
  2. baiduNavigation.start({
  3. start: { // 起点信息.
  4. position: { // 经纬度,与address配合可为空
  5. lon: 112.47723797622677, // 经度.
  6. lat: 34.556480000000015 // 纬度.
  7. },
  8. title: "中国四大石窟之一", // 描述信息
  9. address: "龙门石窟" // 地址信息,与position配合为空
  10. },
  11. goBy: [{ // 途经点位置信息.
  12. position: { // 经纬度,与address配合可为空
  13. lon: 109.77539000000002, // 经度
  14. lat: 33.43144 // 纬度.
  15. },
  16. title: "释源", // 描述信息
  17. address: "白马寺" // 地址信息,与position配合为空
  18. }],
  19. end: { // 终点信息.
  20. position: { // 经纬度,与address配合可为空
  21. lon: 111.57062599999995, // 经度
  22. lat: 33.784214 // 纬度
  23. },
  24. title: "龙蛇之窟", // 描述信息
  25. address: "鸡冠洞" // 地址信息,与position配合为空
  26. }
  27. }, function(ret, err) {
  28. if (ret.status) {
  29. api.alert({
  30. title: "提示",
  31. msg: '导航成功'
  32. });
  33. } else {
  34. var msg = "未知错误";
  35. if (1 == err.code) {
  36. msg = "获取地理位置失败";
  37. }
  38. if (2 == err.code) {
  39. msg = "定位服务未开启";
  40. }
  41. if (3 == err.code) {
  42. msg = "线路取消";
  43. }
  44. if (4 == err.code) {
  45. msg = "退出导航";
  46. }
  47. if (5 == err.code) {
  48. msg = "退出导航声明页面";
  49. }
  50. api.alert({
  51. title: "导航出错",
  52. msg: msg
  53. });
  54. }
  55. });

可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

setItemOverlay

设置自定义图层数据

注:android在打开导航页面之前调用此接口,进入导航页面后自动显示图层,开发者无需在调用显示的接口 iOS只有掉用overlayShow接口设置show为true才会显示

setItemOverlay({params})

params

items:

  • 类型:数组类型
  • 描述:图层数据
  • 内部字段:
  1. [{
  2. position: { JSON对象;图层数据经纬度(百度坐标系)
  3. lon: , //数字类型;图层数据经度
  4. lat: //数字类型;图层数据纬度
  5. },
  6. image: , //字符串类型;图层展示图片,仅支持本地路径(widget,fs)
  7. name: //字符串类型;图片的名字,item的唯一标识符,每个item的name必须唯一
  8. align: { //(可选项)JSON对象;图片的质心方向的偏移(android不支持)
  9. xAlign: , //数字类型;xAlign 图片的质心x方向的偏移 (0 - 1),比如,xAlign和yAlign均为0.5,表示图片的中心在pos的位置;默认:0
  10. yAlign: //数字类型;yAlign 图片的质心y方向的偏移 (0 - 1),比如,xAlign和yAlign均为0.5,表示图片的中心在pos的位置;默认:0
  11. },
  12. }]

示例代码

  1. var baiduNavigation = api.require('baiduNavigation');
  2. baiduNavigation.setItemOverlay({
  3. items:[{
  4. image:'widget://image/111.jpg',
  5. position:{
  6. lon : 112.07539000000002, // 经度
  7. lat : 34.43144 // 纬度.
  8. },
  9. name:'111'
  10. },{
  11. image:'widget://image/222.jpg',
  12. position:{
  13. lon : 112.37539000000002, // 经度
  14. lat : 34.43144 // 纬度.
  15. },
  16. name:'222'
  17. }]
  18. })

可用性

iOS系统,Android系统

可提供的1.1.1及更高版本

updateItemOverlay

更新自定义图层数据

updateItemOverlay({params})

params

items:

  • 类型:数组类型
  • 描述:图层数据
  • 内部字段:
  1. [{
  2. position: { JSON对象;图层数据经纬度(百度坐标系)
  3. lon: , //数字类型;图层数据经度
  4. lat: //数字类型;图层数据纬度
  5. },
  6. image: , //字符串类型;图层展示图片,仅支持本地路径(widger,fs)
  7. name: //字符串类型;图片的名字,item的唯一标识符,每个item的name必须唯一
  8. align: { //(可选项)JSON对象;图片的质心方向的偏移(android不支持)
  9. xAlign: , //数字类型;xAlign 图片的质心x方向的偏移 (0 - 1),比如,xAlign和yAlign均为0.5,表示图片的中心在pos的位置;默认:0
  10. yAlign: //数字类型;yAlign 图片的质心y方向的偏移 (0 - 1),比如,xAlign和yAlign均为0.5,表示图片的中心在pos的位置;默认:0
  11. },
  12. }]

示例代码

  1. var baiduNavigation = api.require('baiduNavigation');
  2. baiduNavigation.updateItemOverlay({
  3. items:[{
  4. image:'widget://image/666.jpg',
  5. position:{
  6. lon : 112.57539000000002, // 经度
  7. lat : 34.43144 // 纬度.
  8. },
  9. name:'111'
  10. },{
  11. image:'widget://image/777.jpg',
  12. position:{
  13. lon : 112.27539000000002, // 经度
  14. lat : 34.43144 // 纬度.
  15. },
  16. name:'222'
  17. }]
  18. })

可用性

iOS系统,Android系统

可提供的1.1.1及更高版本

removeOneItem

删除某个路线图层

removeOneItem({params})

params

name:

  • 类型:字符类型
  • 描述:图片的名字

示例代码

  1. var baiduNavigation = api.require('baiduNavigation');
  2. baiduNavigation.removeOneItem({
  3. name:'111'
  4. })

可用性

iOS系统,Android系统

可提供的1.1.1及更高版本

overlayShow

显示或隐藏自定义图层

overlayShow({params})

params

show:

  • 类型:布尔类型
  • 描述:是否显示(可选项)
  • 默认:true

示例代码

  1. var baiduNavigation = api.require('baiduNavigation');
  2. baiduNavigation.overlayShow({
  3. show:true
  4. })

可用性

iOS系统,Android系统

可提供的1.1.1及更高版本

clearItemOverlay

清除自定义图层数据

clearItemOverlay()

示例代码

  1. var baiduNavigation = api.require('baiduNavigation');
  2. baiduNavigation.clearItemOverlay()

可用性

iOS系统,Android系统

可提供的1.1.1及更高版本