uni-app中uni.chooseLocation在app里latitude和longitude参数不能传空值

uni-app中uni.chooseLocation在app里latitude和longitude参数不能传空值

开发环境 版本号 项目创建方式
Windows win11 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Windows

PC开发环境操作系统版本号:win11

HBuilderX类型:正式

HBuilderX版本号:4.36

手机系统:Android

手机系统版本号:Android 14

手机厂商:小米

手机机型:红米k40s

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

### 操作步骤:

uni.chooseLocation在app中latitude和longitude传空值,报错:[JS Framework] Failed to execute the callback function:
15:18:10.021 TypeError: undefined is not an object (evaluating ‘e.data.detail.points’) __ERROR,以前没有问题,现在才有的


### 预期结果:

不报错


### 实际结果:

报错 [JS Framework] Failed to execute the callback function: 15:18:10.021 TypeError: undefined is not an object (evaluating ‘e.data.detail.points’) __ERROR


### bug描述:

uni.chooseLocation在app中latitude和longitude传空值,报错:[JS Framework] Failed to execute the callback function:
15:18:10.021 TypeError: undefined is not an object (evaluating ‘e.data.detail.points’) __ERROR,以前没有问题,现在才有的


更多关于uni-app中uni.chooseLocation在app里latitude和longitude参数不能传空值的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app中uni.chooseLocation在app里latitude和longitude参数不能传空值的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中,uni.chooseLocation 是一个用于调用原生地图选择位置的接口。根据官方文档,uni.chooseLocation 在小程序和H5平台上使用时,latitudelongitude 参数是可选的,但在App平台(如iOS和Android)上,这两个参数却是不允许为空的。如果为空,可能会导致接口调用失败或返回错误。

为了解决这个问题,你可以在调用 uni.chooseLocation 之前,先获取当前设备的经纬度信息,然后将其作为参数传递给 uni.chooseLocation。以下是一个示例代码,展示如何在uni-app的App平台上使用 uni.getLocation 获取当前位置信息,并使用这些信息调用 uni.chooseLocation

// 引入必要的模块
const uni = window.uni || {};

// 获取当前位置信息
uni.getLocation({
    type: 'gcj02', // 坐标系类型,gcj02表示国测局坐标系
    success: (locationRes) => {
        // 成功获取位置信息
        const { latitude, longitude } = locationRes;

        // 调用chooseLocation选择位置
        uni.chooseLocation({
            latitude: latitude, // 必须传递的纬度参数
            longitude: longitude, // 必须传递的经度参数
            success: (chooseLocationRes) => {
                // 用户成功选择位置后的回调
                console.log('用户选择的位置信息:', chooseLocationRes);
                // 可以在这里处理用户选择的位置信息,如保存到数据库或进行后续操作
            },
            fail: (err) => {
                // 选择位置失败后的回调
                console.error('选择位置失败:', err);
            }
        });
    },
    fail: (err) => {
        // 获取位置信息失败后的回调
        console.error('获取位置信息失败:', err);
        // 可以在这里提示用户获取位置信息失败,并可能需要用户手动开启位置权限
    }
});

在上述代码中,我们首先使用 uni.getLocation 接口获取当前设备的经纬度信息。成功获取后,我们将这些信息作为参数传递给 uni.chooseLocation,确保在App平台上调用该接口时不会因缺少必要的参数而失败。

请注意,在实际应用中,获取位置信息可能需要用户授权,如果用户未授权,uni.getLocation 可能会失败。因此,你需要在应用中处理用户授权的问题,确保在调用 uni.getLocation 之前用户已经授权了位置权限。如果未授权,可以提示用户进行授权操作。

回到顶部