uni-app Gelocation Error: code - 18; message - not support gcj02 at template/__uniappchooselocation.nvue:292
uni-app Gelocation Error: code - 18; message - not support gcj02 at template/__uniappchooselocation.nvue:292
代码示例
uni.chooseLocation({
success: function (res) {
console.log('位置名称:' + res.name);
console.log('详细地址:' + res.address);
console.log('纬度:' + res.latitude);
console.log('经度:' + res.longitude);
}
});
错误信息
- [JS Framework] 当前运行的基座不包含原生插件[mapSearch],请在manifest中配置该插件,重新制作包括该原生插件的自定义运行基座
- Geolocation Error: code - 18; message - not support gcj02 at template/__uniappchooselocation.nvue:292
请问你解决了吗
遇到同样问题 兄弟你解决了没
在处理uni-app中的地理位置错误,特别是涉及坐标系转换的问题时,首先需要了解uni-app的Geolocation API及其与不同坐标系之间的兼容性。错误代码-18
和消息not support gcj02
表明你的应用在尝试使用GCJ-02(国测局坐标系,也称作火星坐标系)时遇到了问题。
在uni-app中,Geolocation API通常默认使用WGS-84坐标系(GPS坐标系),而如果你需要处理GCJ-02坐标系(常见于中国大陆地区的地图服务,如高德地图、腾讯地图),你可能需要手动进行坐标系转换。
以下是一个基本的示例,展示如何在uni-app中捕获地理位置信息,并使用第三方库(如coordtransform
)将WGS-84坐标转换为GCJ-02坐标。注意,你需要先安装coordtransform
库。
-
安装coordtransform库 在你的项目根目录下运行:
npm install coordtransform
-
使用Geolocation API并转换坐标系
// 引入coordtransform库 const coordtransform = require('coordtransform'); uni.getLocation({ type: 'wgs84', // 获取WGS-84坐标 success: function (res) { console.log('原始坐标(WGS-84):', res.latitude, res.longitude); // 转换为GCJ-02坐标 const gcj02 = coordtransform.wgs84_to_gcj02(res.latitude, res.longitude); console.log('转换后的坐标(GCJ-02):', gcj02.lat, gcj02.lng); // 这里可以使用转换后的GCJ-02坐标进行后续操作,如显示地图 }, fail: function (err) { console.error('获取地理位置失败:', err); } });
-
处理nvue文件中的错误
由于错误发生在
__uniappchooselocation.nvue
文件的第292行,你需要检查该行相关的代码,确保你没有在nvue环境中直接使用不支持的API或操作。nvue环境有其特定的限制和API支持,通常与webview环境中的API不完全相同。如果第292行是尝试直接处理地理位置或坐标系转换的代码,考虑将其移至js文件中处理,然后通过事件或props将数据传递回nvue页面。
通过上述步骤,你应该能够解决uni-app中遇到的地理位置坐标系转换问题,并避免在nvue环境中直接使用不支持的API。如果问题仍然存在,可能需要进一步检查你的代码逻辑或查阅uni-app官方文档以获取更多指导。