uni-app 使用plus.geolocation.getCurrentPosition配置高德key后,测试包可逆解析地址,打包后却无addresses
uni-app 使用plus.geolocation.getCurrentPosition配置高德key后,测试包可逆解析地址,打包后却无addresses
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
HBuilderX | 4.24 | 云端 |
操作步骤:
- 打包成app安装,获取不到address
预期结果:
- 获取address
实际结果:
- address没有
bug描述:
plus.geolocation.getCurrentPosition(function (position) {
console.log(position, '定位信息')
let wgs84_coords = coordtransform.gcj02towgs84(position.coords.longitude, position.coords.latitude)
Toast.clear();
resolve({
longitude: wgs84_coords[0],
latitude: wgs84_coords[1],
address: position.addresses
})
},
function (e) {
console.log(e, '错误信息')
Toast.clear();
reject(e.message)
},
{
enableHighAccuracy: true,
geocode: true,
provider: 'amap',
coordsType: "gcj02",
})
)
打包完,获取不到逆地址解析的地址
4 回复
标准基座走的是DCloud的key,打包或自定义基座走的你配的key
有key,打包完就是没有逆解析地址了
在使用uni-app结合高德地图API进行地理定位时,确实可能会遇到开发阶段测试包能够正常解析地址,但打包后却无法获取addresses
信息的情况。这通常是由于打包后的应用未能正确配置或使用高德地图的Key导致的。下面是一个详细的代码示例和配置步骤,帮助你确保打包后的应用也能正确解析地址。
1. 确保高德Key配置正确
首先,确保你在高德开放平台申请的Key是正确的,并且已经启用了相应的服务(如Android SDK、iOS SDK等),同时要注意Key的安全性设置(如是否允许打包应用使用)。
2. 在manifest.json中配置
在uni-app的manifest.json
文件中,添加高德地图的Key配置到mp-weixin
(或其他平台)的app-plus
配置中(如果适用):
"mp-weixin": {
"app-plus": {
"distribute": {
"weex": {},
"maps": {
"provider": "gaode",
"key": "你的高德Key"
}
}
}
}
注意:这里的配置可能因平台而异,确保为每个目标平台正确配置。
3. 使用plus.geolocation.getCurrentPosition
在你的uni-app代码中,使用plus.geolocation.getCurrentPosition
来获取当前位置,并尝试解析地址:
plus.geolocation.getCurrentPosition({
provider: 'gaode', // 指定使用高德地图作为位置服务提供者
success: function(position) {
console.log('纬度:' + position.coords.latitude);
console.log('经度:' + position.coords.longitude);
// 使用高德逆地理编码API获取地址
uni.request({
url: 'https://restapi.amap.com/v3/geocode/regeo?output=json&location=' + position.coords.latitude + ',' + position.coords.longitude + '&key=你的高德Key',
success: function(res) {
if (res.data && res.data.regeocode && res.data.regeocode.formatted_address) {
console.log('地址:' + res.data.regeocode.formatted_address);
} else {
console.error('无法解析地址:', res.data);
}
},
fail: function(err) {
console.error('请求失败:', err);
}
});
},
fail: function(error) {
console.error('获取位置失败:', error);
}
});
注意事项
- 确保打包后的应用具有网络访问权限。
- 检查高德Key是否有对应平台的权限设置(如Android签名证书SHA1)。
- 如果仍然遇到问题,尝试清除应用缓存或重新安装应用。
通过上述步骤,你应该能够确保uni-app打包后的应用也能正确解析地址。如果问题依旧,建议检查高德开放平台控制台的应用配置或联系高德技术支持。