uni-app 使用plus.geolocation.getCurrentPosition配置高德key后,测试包可逆解析地址,打包后却无addresses

发布于 1周前 作者 wuwangju 来自 Uni-App

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,自定义包就是解析不了

有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打包后的应用也能正确解析地址。如果问题依旧,建议检查高德开放平台控制台的应用配置或联系高德技术支持。

回到顶部