更新记录

1.1.4(2021-06-23)

缩减体积插件

1.1.3(2021-06-23)

解决使用map组件导致导航不正常情况

查看更多

平台兼容性

Android Android CPU类型 iOS
适用版本区间:4.4 - 11.0 armeabi-v7a:未测试,arm64-v8a:未测试,x86:未测试 ×

原生插件通用使用流程:

  1. 购买插件,选择该插件绑定的项目。
  2. 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
  3. 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
  4. 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
  5. 开发完毕后正式云打包

付费原生插件目前不支持离线打包。
Android 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/android
iOS 离线打包原生插件另见文档 https://nativesupport.dcloud.net.cn/NativePlugin/offline_package/ios

注意事项:使用HBuilderX2.7.14以下版本,如果同一插件且同一appid下购买并绑定了多个包名,提交云打包界面提示包名绑定不一致时,需要在HBuilderX项目中manifest.json->“App原生插件配置”->”云端插件“列表中删除该插件重新选择




高德导航demo体验:

在这里插入图片描述

使用文档说明

1.首先需要先申请高德Key

高德开发api官网

进入控制台,点击应用管理,配置包名,申请高德apiKey

查询uniapp SHA1签名步骤

1) 将项目打包,然后把apk修改后缀为 .zip文件后解压; 2) 进入解压后的META-INF目录,该目录下会存在文件CERT.RSA 3) 在该目录下打开cmd,输入命令 :keytool -printcert -file CERT.RSA 这里将会显示出MD5和SHA1签名。

2.插件如何调用说明

如果使用map组件导航出现问题,请按此修改

1.在App.vue添加以下代码

const gaodeMap = uni.requireNativePlugin('gaode-map');
gaodeMap.initMapVoice();

在这里插入图片描述

2.manifest.json App模块配置勾选讯飞语音 在这里插入图片描述

1.初始化

const gaodeMap = uni.requireNativePlugin('gaode-map'); 

2.(起点,途径点,终点)导航

参数1:起点 可为空 [ ] *参数2:途径点(最多支持三个) 可为空 [ ] 参数3:终点


getShowRoute(){
            //起点 
            let start = {
                Name: '三元桥',
                Lat: 39.904556,
                Lng: 116.427231,
                ID: ""
            };
            //途径点(最多支持三个)
            let wayList = [];
            let json = {
                Name: '团结湖',
                Lat: 39.93413,
                Lng: 116.461676,
                ID: ""
            }
            let json1 = {
                Name: '华润大厦',
                Lat: 39.912914,
                Lng: 116.434247,
                ID: ""
            };
            wayList.push(json);
            wayList.push(json1);
            //终点
            let end = {
                Name: '北京站',
                Lat: 39.974556,
                Lng: 116.427231,
                ID: ""
            };
            gaodeMap.gotoShowRoute([],wayList,end,(res)=>{
                console.log(res)
            });
            /* gaodeMap.gotoShowRoute(start, wayList, end, (res) => {
                console.log(res)
            }); */
            /* gaodeMap.gotoShowRoute(start,[],end,(res)=>{
                console.log(res)
            }); */
            /* gaodeMap.gotoShowRoute([],[],end,(res)=>{
                console.log(res)
            }); */

        }

### 3.驾车导航
参数: {
                        //起始点位置纬度
                        startLat: this.latlng.lat,
                        //起始点位置经度
                        startLng: this.latlng.lng,
                        //起点名称  可省去不写
                        startName: "A", 
                        //终点纬度
                        endLat: this.latlng.lat + 0.00530826,
                        //终点经度
                        endLng: this.latlng.lng + 0.00403157,
                        //终点名称  可省去不写
                        endName: "B"
                    }
```javascript
gaodeMap.gotoDriveRoute(mapNavi);

4.驾车导航(设置导航策略)

    /* 设置驾车策略导航 */
                let mapStrategy = {
                    //起始点位置纬度
                    startLat: this.latlng.lat,
                    //起始点位置经度
                    startLng: this.latlng.lng,
                    //终点纬度
                    endLat: this.latlng.lat + 0.00530826,
                    //终点经度
                    endLng: this.latlng.lng + 0.00403157,
                    /* ongestion:躲避拥堵
                        avoidhightspeed:不走高速
                        cost:避免收费
                        hightspeed:高速优先
                        multiple:多路径 */
                    congestion:true,
                    avoidhightspeed:true,
                    cost:false,
                    hightspeed:false,
                    multiple:false
                }
                gaodeMap.gotoDriveStrategy(mapStrategy, function(res) {
                    console.log(res)
                });

5.骑行导航

    gaodeMap.gotoDriveRoute(mapNavi, function(res) {
                    console.log(res)
                });

6.步行导航

/* 步行导航 当前位置,终点距离不能超过100公里 */
                gaodeMap.gotoWalkRoute(mapNavi, function(res) {
                    console.log(res)
                });

7. 直接导航

    /* 直接导航 */
                gaodeMap.gotoStartGaoDeNav(mapNavi, function(res) {
                    console.log(res)
                });

8.货车导航

//货车导航
                let car={ 
                    carInfo:{
                            carNumber:"京DFZ239",//车号
                            carType:"1",//设置车辆类型,0小车,1货车
                            vehicleSize:"4",//设置货车的等级
                            vehicleHeight:"4",//设置货车的高度,单位:米。
                            vehicleWeight:"96",//设置货车的自重
                            vehicleLoad:"100",//设置货车的载重,单位:吨
                            vehicleWidth:"2",//设置货车的最大宽度,单位:米。 如:1.8,1.5等等。
                            vehicleLength:"25",//设置货车的最大长度,单位:米
                            vehicleAxis:"6",////设置货车的轴数
                            vehicleLoadSwitch:true,//设置车辆的载重是否参与算路
                            restriction:true,//设置是否躲避车辆限行。
                            },
                       poiList:[
                            {
                                Name:"三元桥",
                                Lat:39.96087,
                                Lng:116.45798,
                                ID:""
                            },
                            {
                                Name: '团结湖',
                                Lat: 39.93413,
                                Lng: 116.461676,
                                ID: ""
                            }
                        ],
                        end:{
                            Name: '北京站',
                            Lat: 39.994556,
                            Lng: 116.427231,
                            ID: ""
                        }

                };
                gaodeMap.gotoAMapCarInfo(car,true, function(res) {
                    console.log(res)
                });

9.自定义导航(接乘客,送乘客到目的地)

为避免勾选讯飞语音造成冲突,所有共用平台的讯飞语音,如使用此方法避免出现白屏,请勾选讯飞语音 在这里插入图片描述

let mapNavi = {
                    //当前车位置
                    currentPositionLat: this.latlng.lat,
                    currentPositionLng: this.latlng.lng,
                    //乘客起始点位置纬度
                    userStartLat: this.latlng.lat+ 0.00100826, 
                    //乘客起始点位置经度
                    userStartLng: this.latlng.lng+ 0.00003157,
                    startName: "某某路A小区",
                    //乘客下车终点纬度
                    userEndLat: this.latlng.lat + 0.00900826,
                    //乘客下车终点经度
                    userEndLng: this.latlng.lng + 0.00603157,
                    endName: "某某路某街B小区", 
                    phoneNum:"18790275701", //用户手机号
                    type:0    //0代表正在前往乘客路上 1代表前往目的地
                }
                gaodeMap.startCustomNavigation(mapNavi, function(res) {
                    /* code 200 到达乘客上车点 
                       code 201 到达目的地
                      totalDistance 驾车总距离 单位米
                       getLatLngTime 获取右滑按钮后提交的时间
                       lastLatLng 获取右滑按钮提交后的经纬度
                      */
                    console.log(res)
                });

3.返回的code码说明

code码 问题说明
0 默认值
100 导航初始化失败
101 启动导航
102 定位回调
103 线路计算成功
104 线路计算失败
105 线路规划失败
106 路径规划完毕,开始导航
107 到达途经点
108 到达目的地
109 退出导航
110 销毁导航
200 到达乘客上车点
201 到达目的地

4.高德相关错误码说明

响应码 问题说明
-1 路径计算失败。
2 网络超时或网络失败。
3 路径规划起点经纬度不合法。
4 协议解析错误。
6 路径规划终点经纬度不合法。
7 算路服务端编码失败。
13 key鉴权失败
18 请求参数非法。
21 途经点经纬度不合法。
22 MD5安全码验证未通过。

5.vue使用示例

<script>
    const gaodeMap = uni.requireNativePlugin('gaode-map');
    let mapNavi = {};
    export default {
        data() {
            return {
                latlng: {
                    lat: "",
                    lng: ""
                }
            }
        },
        onLoad() {
            uni.getLocation({
                success: (res) => {
                    console.log(res);
                    this.latlng.lat = res.latitude;
                    this.latlng.lng = res.longitude;
                    mapNavi = {
                        //起始点位置纬度
                        startLat: this.latlng.lat,
                        //起始点位置经度
                        startLng: this.latlng.lng,
                        startName: "A",
                        //终点纬度
                        endLat: this.latlng.lat + 0.00530826,
                        //终点经度
                        endLng: this.latlng.lng + 0.00403157,
                        endName: "B"
                    }
                }
            })

        },
        methods: {
        //自定义导航 仿打车app*/
            gotoCustomNavigation() {
                let mapNavi = {
                    //当前车位置
                    currentPositionLat: this.latlng.lat,
                    currentPositionLng: this.latlng.lng,
                    //乘客起始点位置纬度
                    userStartLat: this.latlng.lat + 0.00100826,
                    //乘客起始点位置经度
                    userStartLng: this.latlng.lng + 0.00003157,
                    startName: "某某路A小区",
                    //乘客下车终点纬度
                    userEndLat: this.latlng.lat + 0.00900826,
                    //乘客下车终点经度
                    userEndLng: this.latlng.lng + 0.00603157,
                    endName: "某某路某街B小区",
                    phoneNum: "18790275701", //用户手机号
                    type: 0 //0代表正在前往乘客路上 1代表前往目的地
                }
                gaodeMap.startCustomNavigation(mapNavi, function(res) {
                    /* code 200 到达乘客上车点 
                       code 201 到达目的地
                      totalDistance 驾车总距离 单位米
                       getLatLngTime 获取右滑按钮后提交的时间
                       lastLatLng 获取右滑按钮提交后的经纬度
                      */
                    console.log(res)
                });
            },
            gotoStartGaoDeNav() {
                /* 直接导航 */
                gaodeMap.gotoStartGaoDeNav(mapNavi, function(res) {
                    console.log(res)
                });
            },
            gotoRide() {
                /* 骑行导航 */
                gaodeMap.gotoRideRoute(mapNavi, function(res) {
                    console.log(res)
                });
            },
            gotoDriveRoute() {
                /* 驾车导航 */
                gaodeMap.gotoDriveRoute(mapNavi, function(res) {
                    console.log(res)
                });
            },
            gotoWalkRoute() {
                /* 步行导航 当前位置,终点距离不能超过100公里 */
                gaodeMap.gotoWalkRoute(mapNavi, function(res) {
                    console.log(res)
                });
            },
            getShowRoute() {
                //起点 
                let start = {
                    Name: '三元桥',
                    Lat: 39.904556,
                    Lng: 116.427231,
                    ID: ""
                };
                //途径点(最多支持三个)
                let wayList = [];
                let json = {
                    Name: '团结湖',
                    Lat: 39.93413,
                    Lng: 116.461676,
                    ID: ""
                }
                let json1 = {
                    Name: '华润大厦',
                    Lat: 39.912914,
                    Lng: 116.434247,
                    ID: ""
                };
                wayList.push(json);
                wayList.push(json1);
                //终点
                let end = {
                    Name: '北京站',
                    Lat: 39.974556,
                    Lng: 116.427231,
                    ID: ""
                };
                    gaodeMap.gotoShowRoute([],wayList,end,(res)=>{
                    console.log(res)
                });
                /* gaodeMap.gotoShowRoute(start, wayList, end, (res) => {
                    console.log(res)
                }); */
                /* gaodeMap.gotoShowRoute(start,[],end,(res)=>{
                    console.log(res)
                }); */
                /* gaodeMap.gotoShowRoute([],[],end,(res)=>{
                    console.log(res)
                }); */
            }

        }
    }
</script>

隐私、权限声明

1. 本插件需要申请的系统权限列表:

<!--用于访问网络,网络定位需要上网--> <uses-permission android:name="android.permission.INTERNET" /> <!--写入扩展存储,向扩展卡写入数据,用于写入缓存定位数据--> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!--用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!--获取运营商信息,用于支持提供运营商信息相关的接口--> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--用于访问GPS定位--> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!--用于读取手机当前的状态--> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!--用于访问wifi网络信息,wifi信息会用于进行网络定位--> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!--这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位--> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!--这个权限用于允许程序在手机屏幕关闭后后台进程仍然运行--> <uses-permission android:name="android.permission.WAKE_LOCK"/>

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件使用的高德地图SDK存在采集数据行为 发送的服务器地址:https://lbs.amap.com ,用于高德导航

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问