baiduNavigation

来自于:开发者立即使用

概述

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
  • 取值范围:
    • iOS专用类型(对android无效)

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

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

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及更高版本