uni-app uni.chooseLocation 无法获取位置列表

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

uni-app uni.chooseLocation 无法获取位置列表

开发环境

环境 信息
PC操作系统 Windows
PC操作系统版本 window10
编辑器 HBuilderX
编辑器版本 4.23

手机环境

环境 信息
手机系统 Android
系统版本 Android 14
手机厂商 华为
手机型号 mate20

其他信息

示例代码:

uni.chooseLocation({
longitude:_this.srcLongitude,
latitude:_this.srcLatitude,
success(res) {
_this.srcAddress = res.name
_this.srcLongitude = res.longitude
_this.srcLatitude = res.latitude
_this.tip3 = false;
}
})

操作步骤:

传入经纬度,获取附近地址列表

预期结果:

获取附近地址列表

实际结果:

无法查询出列表

bug描述:

uni.chooseLocation({
longitude:_this.srcLongitude,
latitude:_this.srcLatitude,
success(res) {
_this.srcAddress = res.name
_this.srcLongitude = res.longitude
_this.srcLatitude = res.latitude
_this.tip3 = false;
}
})

这个方法出了几次问题了,有一次是官方好像升级api了,不传入经纬度无法查询出列表。运行了一段时间,传入的经纬度也出不来金纬度了,运行的好好的就无法获取地址列表,客户无法选择位置了。

Image


2 回复

看看高德地图后台,是不是没权限了


在处理 uni-appuni.chooseLocation 无法获取位置列表的问题时,首先需要确保你的应用具有相应的权限,并且 uni.chooseLocation 的调用方式正确。以下是一些常见的排查步骤和代码示例,帮助你定位和解决问题。

1. 确保权限配置正确

manifest.json 中配置必要的权限,例如:

"mp-weixin": { // 微信小程序
    "permission": {
        "scope.userLocation": {
            "desc": "你的位置信息将用于小程序定位功能"
        }
    }
},
"app-plus": { // App平台
    "distribute": {
        "android": {
            "permissions": [
                "android.permission.ACCESS_FINE_LOCATION",
                "android.permission.ACCESS_COARSE_LOCATION"
            ]
        },
        "ios": {
            "NSLocationWhenInUseUsageDescription": "需要您的同意,以便应用可以使用您的位置",
            "NSLocationAlwaysUsageDescription": "需要您的同意,以便应用始终可以使用您的位置"
        }
    }
}

2. 检查 uni.chooseLocation 调用代码

确保 uni.chooseLocation 的调用方式正确,并且处理了可能的错误情况。以下是一个基本的调用示例:

uni.chooseLocation({
    success: function (res) {
        console.log('选择位置成功:', res);
        // 处理选择的位置
    },
    fail: function (err) {
        console.error('选择位置失败:', err);
        // 处理错误,例如提示用户授权位置信息
        uni.showModal({
            title: '提示',
            content: '请授权位置信息以便选择位置',
            showCancel: false,
            success: function () {
                // 引导用户到设置页面授权
                #ifdef MP-WEIXIN
                wx.openSetting({
                    success: function (settingRes) {
                        if (settingRes.authSetting['scope.userLocation']) {
                            // 用户已授权,再次尝试调用 chooseLocation
                            uni.chooseLocation();
                        } else {
                            // 用户未授权,进行相应处理
                            uni.showToast({
                                title: '请授权位置信息',
                                icon: 'none'
                            });
                        }
                    }
                });
                #endif
            }
        });
    }
});

3. 调试与日志

  • 确保在开发者工具中查看控制台日志,检查是否有相关错误信息。
  • 在真机上进行测试,因为某些权限和API调用在模拟器上可能无法正常工作。

4. 注意事项

  • 不同平台(如微信小程序、H5、App等)可能有特定的权限要求或限制,确保按照平台文档进行配置。
  • 用户拒绝授权后,应有合理的引导机制,让用户知道授权的重要性。

通过上述步骤和代码示例,你应该能够定位和解决 uni.chooseLocation 无法获取位置列表的问题。如果问题依然存在,建议查阅 uni-app 官方文档或社区论坛获取更多帮助。

回到顶部