更新记录
1.2.5(2024-11-04)
兼容map模块
1.2.4(2024-11-01)
更新高德导航,升级导航至最新版本,导航包含高德地图,只勾选高德定位模块,不要勾选高德地图模块!
1.2.3(2024-10-29)
新版调试
查看更多平台兼容性
Android | Android CPU类型 | iOS |
---|---|---|
适用版本区间:5.0 - 13.0 | armeabi-v7a:支持,arm64-v8a:支持,x86:未测试 | × |
原生插件通用使用流程:
- 购买插件,选择该插件绑定的项目。
- 在HBuilderX里找到项目,在manifest的app原生插件配置中勾选模块,如需要填写参数则参考插件作者的文档添加。
- 根据插件作者的提供的文档开发代码,在代码中引用插件,调用插件功能。
- 打包自定义基座,选择插件,得到自定义基座,然后运行时选择自定义基座,进行log输出测试。
- 开发完毕后正式云打包
付费原生插件目前不支持离线打包。
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原生插件配置”->”云端插件“列表中删除该插件重新选择
## 注意注意!! 只需勾选高德定位模块,不要勾选高德地图模块,导航插件内包含地图,可以直接用map组件
使用文档说明
1.首先需要先申请高德Key
进入控制台,点击应用管理,配置包名,申请高德apiKey
查询uniapp SHA1签名步骤
1) 将项目打包,然后把apk修改后缀为 .zip文件后解压; 2) 进入解压后的META-INF目录,该目录下会存在文件CERT.RSA 3) 在该目录下打开cmd,输入命令 :keytool -printcert -file CERT.RSA 这里将会显示出MD5和SHA1签名。
2.插件如何调用说明
1.初始化
const gaodeMap = uni.requireNativePlugin('gaode-map');
2.地图隐私合规检查接口
//隐私权政策是否包含高德开平隐私权政策 true是包含
var isContains = true;//隐私权政策是否包含高德开平隐私权政策 true是包含
var isShow = true;//隐私权政策是否弹窗展示告知用户 true是展示
gaodeMap.updatePrivacyShow(isContains,isShow)
//隐私权政策是否取得用户同意 true是用户同意
gaodeMap.updatePrivacyAgree(true)
3.(起点,途径点,终点)导航
参数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)
}); */
}
### 4.驾车导航
参数: {
//起始点位置纬度
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);
5.驾车导航(设置导航策略)
/* 设置驾车策略导航 */
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)
});
6.骑行导航
gaodeMap.gotoDriveRoute(mapNavi, function(res) {
console.log(res)
});
7.步行导航
/* 步行导航 当前位置,终点距离不能超过100公里 */
gaodeMap.gotoWalkRoute(mapNavi, function(res) {
console.log(res)
});
8. 直接导航
/* 直接导航 */
gaodeMap.gotoStartGaoDeNav(mapNavi, function(res) {
console.log(res)
});
9.货车导航
//货车导航
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)
});
10.自定义导航(接乘客,送乘客到目的地)
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:"", //用户手机号
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: "", //用户手机号
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>