uniapp 腾讯地图geolocation error: code -18 不支持gcj02坐标如何解决?

在使用uniapp集成腾讯地图时,调用geolocation获取位置出现错误:code -18,提示不支持gcj02坐标。请问该如何解决这个问题?需要修改配置还是转换坐标格式?求具体解决方案。

2 回复

腾讯地图不支持GCJ02坐标,需改用WGS84。在uniapp的geolocation配置中,将type参数设为’wgs84’即可解决。


在UniApp中使用腾讯地图时,遇到错误代码-18(不支持gcj02坐标)通常是因为坐标类型不匹配。腾讯地图SDK默认使用WGS84坐标(GPS标准),而gcj02是中国国测局加密坐标(如高德、腾讯地图常用)。以下是解决方案:

  1. 检查坐标类型设置
    在调用uni.getLocation时,确保type参数设置为gcj02,并确认腾讯地图服务支持该坐标类型(部分版本可能限制)。

    uni.getLocation({
      type: 'gcj02', // 明确指定坐标类型
      success: (res) => {
        console.log('纬度:' + res.latitude + ', 经度:' + res.longitude);
      },
      fail: (err) => {
        console.error('定位失败:', err);
        // 处理错误,例如提示用户或尝试备用方案
      }
    });
    
  2. 使用坐标转换
    如果腾讯地图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);
    
  3. 检查SDK配置
    在腾讯地图开放平台确认您的应用Key是否正确配置,并支持所需坐标类型。部分服务可能需在控制台启用特定选项。

  4. 备选方案
    如果问题持续,尝试使用高德地图或百度地图SDK(UniApp支持多平台),它们原生支持gcj02坐标。

总结:优先通过设置type: 'gcj02'解决,若无效则进行坐标转换。确保SDK兼容性,并检查网络权限(如GPS是否开启)。如果问题复杂,提供更多错误详情以便进一步排查。

回到顶部