aMapNavigation

来自于:开发者立即使用

[updateNavigationPrivacy](#updateNavigationPrivacy)

start

close

navigationTextListener

openNavigation

closeNavigation

论坛示例

为帮助用户更好更快的使用模块,论坛维护了一个示例,示例中包含示例代码、知识点讲解、注意事项等,供您参考。

概述

注意:应工信部要求,自本模块1.3.0版本起首次调用本模块前必须先弹出隐私协议,详情参考SDK合规使用方案。之后需先调用 updateNavigationPrivacy,否则导航接口无效。

aMapNavigation 插件封装了高德导航的sdk,iOS支持语音导航功能, Android需要自己写接口播报(注:android从1.0.8开始支持高德内置的语音播报)。用户可自行算路策略类型。开发者只需输入起点终点经纬度即可轻松集成高德导航功能,本插件是由第三方模块开发者提供,使用本插件需在线云编译安装包。

使用插件前,请先注册高德开放平台账号。

注意:在iOS端最低适配版本为 iOS 11.0

不能同时添加的模块:bMap

在集成此模块之前需先配置 config 文件。在 config 里添加如下字段:

  • 名称:aMap
  • 参数:android_api_key、ios_api_key
  • 备注:同一个 App 需要同时支持 iOS 和 Android 平台,必须单独申请各自的 apiKey,并同时配置在 config 文件中
  • 配置示例:
  <feature name="aMapNavigation">
    <param name="android_api_key" value="f7Is0dWLom2q6rV3ZfFPZ1aa" />
    <param name="ios_api_key" value="81qz3dBYB5q2nGji4IYrawr1" />
  </feature>
  • 字段描述:

    android_api_key:在高德地图开放平台申请的 Android 端 AK

    ios_api_key:在高德地图开放平台申请的 iOS 端 AK

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

配置实例:

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

用户在使用本模块之前需要获取高德地图API Key,Key 申请的具体流程请参照 申请Key。本模块需要的 key 可以和 aMapaMapLBSaMapLocationaMapReportLocation 模块的 key 共用。

从1.2.6版本起,iOS 端 SDK 更新为高德最新版本SDK,最新版本的SDK包含 IDFA 相关功能。所以 iOS 端提交 AppStore 时必须认真阅读 提交AppStore必读,以及如何解决因获取 IDFA 被 AppStore 拒绝的问题?

#模块接口

updateNavigationPrivacy

设置导航隐私权限

updateMapViewPrivacy({params})

params

privacyAgree:

  • 类型:字符串
  • 描述:(可选项)用户同意隐私状态
  • 默认值:didAgree
  • 取值范围:
    • didAgree:已同意
    • notAgree;不同意
    • unknow:未知

privacyShow:

  • 类型:字符串
  • 描述:(可选项)显示隐私弹窗状态
  • 默认值:didShow
  • 取值范围:
    • didShow:已显示
    • notShow;未显示
    • unknow:未知

containStatus:

  • 类型:字符串
  • 描述:(可选项) 集成SDK隐私信息状态
  • 默认值:didContain
  • 取值范围:
    • didContain:已集成
    • notContain;未集成
    • unknow:未知

示例代码

var aMap = api.require('aMapNavigation');
aMap.updateNavigationPrivacy({
    privacyAgree:'didAgree',
    privacyShow:'didShow',
    containStatus:'didContain'
});

可用性

iOS系统,Android系统

可提供的1.3.0及更高版本

start

开始导航

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

##params

start:

  • 类型:JSON 对象
  • 描述:起点信息
  • 内部字段:
{
    lon:  //数字类型;起点经度
    lat:  //数字类型;起点纬度
}

wayPoint:

  • 类型:数组
  • 描述:(可选项)途经点位置信息,当 type 为 walk 时本参数无效
  • 内部字段:
[{
    lon:   //数字类型;起点经度
    lat:   //数字类型;起点纬度
}]

end:

  • 类型:JSON 对象
  • 描述:终点信息
  • 内部字段:
{
   lon:  //数字类型;起点经度
   lat:  //数字类型;起点纬度
}

type:

  • 类型:字符串
  • 描述:(可选项)导航路线类型
  • 默认值:drive
  • 取值范围:
    • drive:驾驶
    • walk:步行
    • ride:骑行

strategy:

  • 类型:字符串
  • 描述:(可选项)算路策略,仅当 type 为 drive 时有效 (android不支持)
  • 默认值:fast
  • 取值范围:
    • fast:速度优先
    • fee:费用优先
    • distance:距离优先
    • highway:普通路优先(不走快速路、高速路)
    • jam:时间优先,躲避拥堵
    • feeJam:躲避拥堵且不走收费道路

congestion:

  • 类型:布尔类型
  • 描述:是否躲避拥堵 (ios不支持)
  • 默认值:true

avoidspeed:

  • 类型:布尔类型
  • 描述:不走高速 (ios不支持)
  • 默认值:false

cost:

  • 类型:布尔类型
  • 描述:避免收费 (ios不支持)
  • 默认值:false

hightspeed:

  • 类型:布尔类型
  • 描述:高速优先 (ios不支持)
  • 默认值:false

multipleRoute:

  • 类型:布尔类型
  • 描述:单路径or多路径 (ios不支持)
  • 默认值:false

mode:

  • 类型:字符串
  • 描述:(可选项)导航模式
  • 默认值:GPS
  • 取值范围:
    • GPS:GPS实时导航
    • emulator:模拟导航

styles:

  • 类型:JSON 对象
  • 描述:(可选项)模块各部分的样式
  • 内部字段:
{
        image: {            //(可选项)JSON对象;标注图标配置
            start: ,        //(可选项)字符串类型;起点图标路径,要求本地路径(fs://、widget://),若不传则显示公用的图标
            end: ,          //(可选项)字符串类型;终点图标路径,要求本地路径(fs://、widget://),若不传则显示公用的 图标
            way: ,          //(可选项)字符串类型;途经点图标(只适用于驾车导航)路径,要求本地路径(fs://、widget://),若不传则显示公用的图标
            camera:         //(可选项)字符串类型;摄像头图标(只适用于驾车导航)路径,要求本地路径(fs://、widget://),若不传则显示公用的图标
        },
        preference: {       //(可选项)JSON对象;偏好设置
            night: false,   //(可选项)布尔类型;是否显示黑夜模式;默认:false
            compass: false, //(可选项)布尔类型;是否显示指南针;默认:false
            crossImg: false,//(可选项)布尔类型;是否显示路口放大图,只适用于驾车导航;默认:false
            degree: 30,     //(可选项)数字类型;地图倾角大小,范围[0,60],大于40会显示蓝天;默认:30
            yawReCal: false,//(可选项)数字类型;偏航时是否重新计算路径;默认:true;android不支持。已废弃,默认重算
            alwaysBright: , //(可选项)数字类型;导航状态下屏幕是否一直开启;默认:false
            allowsBackgroundLocationUpdates: ''  //(可选项)布尔类型;是否允许后台定位,暂仅支持 iOS 平台且只在iOS 9.0及之后起作用;默认:false,为 true 时必须保证 conifg.xml 文件内把后台定位和后台音频播放打开,否则会异常,具体操作见 config.xml 文件配置文档	    }
}

##callback(ret, err)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    eventType: '',        //字符串类型;导航事件,取值范围:
                                //calculateSuc  路径规划成功
                                //calculateFai  路径规划失败
                                //naviFai       导航发生错误
                                //naviStart     导航页面推出并开始导航
                                //naviEnd       达到目的地导航结束
                                //naviClose     用户关闭导航页面
    routeInfo: {          //JSON对象;导航的路线信息,仅当 eventType 为 calculateSuc 时有值
       length: ,          //数字类型;导航路径总长度(单位:米)
       time: ,            //数字类型;导航路径所需要的时间(单位:秒)
       segmentCount: ,    //数字类型;导航路线上分段的总数
       trafficLightCount:,//数字类型;导航路线上红绿灯的总数
       tollCost:          //数字类型;导航路线的花费金额(单位:元)
    }
}

err:

  • 类型:JSON 对象
  • 内部字段:
{
     code:       //数字类型;错误码,取值范围如下:
                    //2 	网络超时或网络失败
                    //3 	起点错误
                    //4 	协议解析错误
                    //6 	终点错误
                    //10 	起点没有找到道路
                    //11 	没有找到通向终点的道路
                    //12 	没有找到通向途经点的道路
                    //13 	路径长度超过限制
                    //14 	其他错误
}

##示例代码

var aMapNavigation = api.require('aMapNavigation');
aMapNavigation.start({
    start: {
        lon: 112.47723797622677,
        lat: 34.556480000000015
    },
    wayPoint: [{
        lon: 109.77539000000002,
        lat: 33.43144
    }],
    end: {
        lon: 111.57062599999995,
        lat: 33.784214
    },
    type: 'drive',
    strategy: 'fast',
    mode: 'GPS',
    styles: {
        image: {
            start: 'fs://nav/start.png',
            end: 'fs://nav/end.png',
            way: 'fs://nav/way.png',
            camera: 'fs://nav/camera.png'
        },
        preference: {
            night: false,
            compass: false,
            crossImg: false,
            degree: 30,
            yawReCal: false,
            jamReCal: false,
            alwaysBright: false
        }
    }
}, function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    } else {
        alert(JSON.stringify(err));
    }
});

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

close

关闭导航

close()

##示例代码

var aMapNavigation = api.require('aMapNavigation');
aMapNavigation.close();

##可用性

iOS系统,Android系统

可提供的1.0.0及更高版本

navigationTextListener

监听导航文字提示

android上此接口需要在start之前调用

navigationTextListener({params}, callback(ret))

##params

state:

  • 类型:布尔类型
  • 描述:是否监听导航文字提示(注:android上如果此参数为true,内置语音无法播报,需要开发者根据回调自行用其他SDK播报)
  • 默认值: true

stopReading:

  • 类型:布尔类型
  • 描述:是否关闭模块自带的导航语音,仅支持 iOS 端
  • 默认值: true

##callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
    text: ''       //字符串类型;导航文字提示
}

##示例代码

var aMapNavigation = api.require('aMapNavigation');
aMapNavigation.navigationTextListener({
    state : true
}, function(ret, err) {
    if (ret) {
        alert(JSON.stringify(ret));
    }
});

##可用性

Android 系统 , iOS系统

可提供的1.2.0及更高版本

openNavigation

打开导航组件页面

openNavigation({params},callback(ret))

##params

routes:

  • 参数:数组类型
  • 描述:(可选项)设置起点、终点、途径点(最多支持三个途径点)来调起路线规划页面,自动完成算路. 如果不设置起点,默认使用的是“我的位置”
  • 内部字段:
[{
    planPOIType:0,  //数字类型;POI点的起终点类型,0:起点,1:终点,2:途径点
    latitude: 39.91362,              //数字类型;纬度
    longitude: 116.40395,               //数字类型;经度  
    name:'',               //(可选项)字符串类型;POI点的名字,选填. SDK会将该名字显示在搜索栏内. 如果不传将使用默认值,如“终点”、“途径点1”  
    mid: '',               //(可选项)字符串类型;POI点的高德唯一标识ID,选填. 如果传入,SDK将会优先使用此ID对应的POI点的经纬度坐标、名字等信息进行算路和展示  
}]

themeType:

  • 参数:数字类型
  • 描述:设置导航组件的主题皮肤类型;0:蓝色系,1:浅色系,2:暗色系
  • 默认:0

##callback(ret)

ret:

  • 类型:JSON 对象
  • 内部字段:
{
      eventType: 'didStartNavi', //字符串类型;导航组件页面事件类型
                               //取值范围:
                               //calculateRouteSuccess(算路成功,路径规划页面的算路、导航页面的重算等成功后均会返回该事件)
                               //calculateRouteFailure(算路失败,路径规划页面的算路、导航页面的重算等失败后均会返回该事件)
                               //compositeError(发生错误)
                               //didStartNavi(开始导航)
                               //updateNaviLocation(当前位置更新回调(无论是否在导航中,只要当前位置有更新就会返回该事件))
                               //didArrivedDestination(导航到达目的地)
                               //didChangeDayNightType(驾车导航页面白天夜间模式切换)
                               //didBackwardAction(导航组件页面回退或者退出导航组件时会返回该事件)
                               //onArrivedWayPoint(导航到达某个途经点)
                               //didChangeBroadcastType(导航语音播报模式设置改变)			              		              
    backwardActionType:0, //数字类型;导航组件页面回退的动作类型,eventType为didBackwardAction时返回;0:退出了整个导航组件,1:退出了导航组件中的导航界面
    showStandardNightType: true, //布尔类型;是否为夜间模式,eventType为didChangeDayNightType时返回,true 表示夜间模式,false 表示白天模式
    wayPointIndex:0, //数字类型;到达途径点的编号,,eventType为onArrivedWayPoint时返回,标号从0开始,注意:如果导航过程进行了路径重算(包含偏航、手动刷新等),wayPointIndex会重新从0开始计数
    broadcastType:0, //数字类型;导航语音播报模式设置改变的动作类型,eventType为didChangeBroadcastType时返回;0:详细播报,1:简洁播报,2:静音
    naviLocation: { //json对象,当前位置信息,eventType为updateNaviLocation时返回
        timestamp: '', //字符串类型;时间戳
        accuracy: 0, //数字类型;精确度
        altitude: 0, //数字类型;高度
        heading: 0, //数字类型;方向
        speed: 0, //数字类型;速度(km/h)
        currentSegmentIndex: 0, //数字类型;当前所在的segment段的index,从0开始
        currentLinkIndex: 0, //数字类型;当前所在的link段的index,从0开始
        currentPointIndex: 0, //数字类型;当前自车位置在当前link段所在的point的index,从0开始
        isMatchNaviPath: true, //布尔类型;是否匹配在道路上
        isNetworkNavi: true, //布尔类型;当前定位点是否为参与导航的网络点. 注意:只针对驾车
        coordinate: { //json对象,经纬度
            latitude: 0, //数字类型;纬度
            longitude: 0, //数字类型;经度
        }
    },
    errCode: , //数字类型;失败错误码eventType为compositeError、calculateRouteFailure时返回
    errMsg: , //字符串类型;失败描述eventType为compositeError、calculateRouteFailure时返回
}

##示例代码

var aMapNavigation = api.require('aMapNavigation');
aMapNavigation.openNavigation(function(ret) {
    if (ret) {
        alert(JSON.stringify(ret));
    }
});

##可用性

Android 系统 ,iOS系统

可提供的1.3.6及更高版本

closeNavigation

关闭导航组件页面

closeNavigation()

##示例代码

var aMapNavigation = api.require('aMapNavigation');
aMapNavigation.closeNavigation();

##可用性

Android 系统 ,iOS系统

可提供的1.3.6及更高版本

是否仍需要帮助? 请保持联络!
最后更新于 2024/04/8