uniapp 腾讯地图geolocation error: code -18 不支持gcj02坐标如何解决?
在使用uniapp集成腾讯地图时,调用geolocation获取位置出现错误:code -18,提示不支持gcj02坐标。请问该如何解决这个问题?需要修改配置还是转换坐标格式?求具体解决方案。
2 回复
在UniApp中使用腾讯地图时,遇到错误代码-18(不支持gcj02坐标)通常是因为坐标类型不匹配。腾讯地图SDK默认使用WGS84坐标(GPS标准),而gcj02是中国国测局加密坐标(如高德、腾讯地图常用)。以下是解决方案:
-
检查坐标类型设置:
在调用uni.getLocation时,确保type参数设置为gcj02,并确认腾讯地图服务支持该坐标类型(部分版本可能限制)。uni.getLocation({ type: 'gcj02', // 明确指定坐标类型 success: (res) => { console.log('纬度:' + res.latitude + ', 经度:' + res.longitude); }, fail: (err) => { console.error('定位失败:', err); // 处理错误,例如提示用户或尝试备用方案 } }); -
使用坐标转换:
如果腾讯地图SDK强制要求WGS84坐标,但您的应用需要gcj02,可以在获取位置后调用转换API(例如使用第三方库如coordtransform)进行转换。// 示例:安装 coordtransform 库(需通过npm安装) // npm install coordtransform const coordtransform = require('coordtransform'); // 假设获取到WGS84坐标 let wgs84 = [116.404, 39.915]; let gcj02 = coordtransform.wgs84togcj02(wgs84[0], wgs84[1]); console.log('转换后坐标:', gcj02); -
检查SDK配置:
在腾讯地图开放平台确认您的应用Key是否正确配置,并支持所需坐标类型。部分服务可能需在控制台启用特定选项。 -
备选方案:
如果问题持续,尝试使用高德地图或百度地图SDK(UniApp支持多平台),它们原生支持gcj02坐标。
总结:优先通过设置type: 'gcj02'解决,若无效则进行坐标转换。确保SDK兼容性,并检查网络权限(如GPS是否开启)。如果问题复杂,提供更多错误详情以便进一步排查。


