uni-app ios18使用uni.chooseLocation报错Gelocation Error: code - -1504; message - Not Support CoordsType,无法修改type

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

uni-app ios18使用uni.chooseLocation报错Gelocation Error: code - -1504; message - Not Support CoordsType,无法修改type

产品分类

uniapp/App

示例代码

uni.chooseLocation({
  success: (res) => {
    console.log(res)
  },
  fail(res) {
    console.log(res)
  }
});

操作步骤

预期结果

实际结果

bug描述

在使用uni.getLocation,type为gcj02,ios18报错: Gelocation Error: code - -1504; message - Not Support CoordsType

修改成wgs84可以正常获取定位使用,已解决

现在的问题
使用uni.chooseLocation,还是报Gelocation Error: code - -1504; message - Not Support CoordsType

查询了文档,api上面没有可修改type的,这个问题要怎么解决呢

开发环境信息

项目创建方式 PC开发环境操作系统 HBuilderX类型 HBuilderX版本号 手机系统 手机系统版本号 手机厂商 手机机型 页面类型 vue版本 打包方式
HBuilderX Windows 正式 4.29 iOS iOS 18 苹果 14pro vue vue2 云端

1 回复

在uni-app中,uni.chooseLocation 接口用于调起原生地图选择位置,但在iOS 18上遇到 Gelocation Error: code - -1504; message - Not Support CoordsType 错误通常意味着当前环境不支持指定的坐标类型。尽管我们不能直接修改 chooseLocation 接口的 coordsType 参数(因为该参数在uni-app的官方文档中并未提及),但我们可以尝试一些替代方案或检查当前的实现方式。

首先,确认你的uni-app版本是最新的,因为开发者工具和新版本的框架可能会修复一些已知的兼容性问题。

以下是一个基本的 uni.chooseLocation 使用示例,没有指定 coordsType,因为该参数在官方API中不存在:

uni.chooseLocation({
    success: function (res) {
        console.log('位置选择成功:', res);
        // res.name      位置名称
        // res.address   详细地址
        // res.latitude  纬度,浮点数,范围为-90~90
        // res.longitude 经度,浮点数,范围为-180~180
        // res.scale     缩放级别,整数,范围1~18
    },
    fail: function (err) {
        console.error('位置选择失败:', err);
    }
});

由于错误信息提示不支持 CoordsType,而实际上 uni.chooseLocation 并没有这个参数,我们需要考虑的是iOS 18对地理位置权限或API调用的变更。以下是一些可能的解决步骤:

  1. 检查权限: 确保你的应用在iOS上已正确请求并获得了地理位置权限。在 manifest.json 中配置必要的权限,并在iOS项目中检查 Info.plist 是否包含必要的权限声明,如 NSLocationWhenInUseUsageDescriptionNSLocationAlwaysAndWhenInUseUsageDescription

  2. 使用兼容代码: 考虑到iOS版本的更新,可以尝试使用 uni.getLocation 作为备选方案,虽然它提供的是当前位置而非用户选择的位置,但可以作为临时解决方案。

    uni.getLocation({
        type: 'gcj02', // 坐标系,默认为 wgs84
        success: function (res) {
            console.log('获取位置成功:', res);
        },
        fail: function (err) {
            console.error('获取位置失败:', err);
        }
    });
    
  3. 联系uni-app支持: 如果问题依旧存在,建议联系DCloud官方支持或在社区中寻求帮助,可能是框架层面需要适配iOS 18的新特性。

通过上述步骤,你应该能够更清楚地定位问题所在,并找到合适的解决方案。

回到顶部