uni-app ios18使用uni.chooseLocation报错Gelocation Error: code - -1504; message - Not Support CoordsType,无法修改type
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 | 云端 |
在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调用的变更。以下是一些可能的解决步骤:
-
检查权限: 确保你的应用在iOS上已正确请求并获得了地理位置权限。在
manifest.json
中配置必要的权限,并在iOS项目中检查Info.plist
是否包含必要的权限声明,如NSLocationWhenInUseUsageDescription
和NSLocationAlwaysAndWhenInUseUsageDescription
。 -
使用兼容代码: 考虑到iOS版本的更新,可以尝试使用
uni.getLocation
作为备选方案,虽然它提供的是当前位置而非用户选择的位置,但可以作为临时解决方案。uni.getLocation({ type: 'gcj02', // 坐标系,默认为 wgs84 success: function (res) { console.log('获取位置成功:', res); }, fail: function (err) { console.error('获取位置失败:', err); } });
-
联系uni-app支持: 如果问题依旧存在,建议联系DCloud官方支持或在社区中寻求帮助,可能是框架层面需要适配iOS 18的新特性。
通过上述步骤,你应该能够更清楚地定位问题所在,并找到合适的解决方案。