uniapp引入高德地图时type设置wgs84定位正常但gcj02报getloaction:fail not surp错误如何解决?

在uni-app中使用高德地图时,设置type为wgs84可以正常获取定位,但改为gcj02时会报错"getlocation:fail not surp"。请问这个错误该如何解决?需要检查哪些配置或权限设置?

2 回复

检查是否配置了高德地图SDK,确保在manifest.json中正确配置了高德地图的AppKey。另外,确认设备GPS是否开启,以及应用是否获取了定位权限。


在uni-app中使用高德地图时,gcj02坐标系报getLocation:fail not surp错误,通常是因为高德地图SDK不支持直接返回GCJ-02坐标。以下是解决方案:

原因分析

  1. 高德地图定位SDK默认返回WGS-84坐标(GPS标准坐标)。
  2. gcj02参数在某些环境下可能不被支持,导致接口报错。

解决方案

方法1:使用WGS-84坐标,再转换为GCJ-02(推荐)

// 1. 使用WGS-84获取定位
uni.getLocation({
  type: 'wgs84',
  success: (res) => {
    // 2. 将WGS-84坐标转换为GCJ-02坐标
    const gcj02 = wgs84ToGcj02(res.longitude, res.latitude);
    console.log('GCJ-02坐标:', gcj02);
  }
});

// WGS-84转GCJ-02坐标转换函数(需自行实现或使用第三方库)
function wgs84ToGcj02(lng, lat) {
  // 这里调用坐标转换算法或引入转换库
  // 示例伪代码,实际需实现完整转换逻辑
  return {
    longitude: lng + 0.0065,
    latitude: lat + 0.006
  };
}

方法2:检查manifest.json配置 确保高德地图配置正确:

// manifest.json -> App模块配置
"App模块配置": {
  "Maps": {
    "高德地图": {
      "appkey_android": "你的高德Android Key",
      "appkey_ios": "你的高德iOS Key"
    }
  }
}

方法3:使用高德地图原生SDK 通过uni-app的Native.js直接调用高德原生SDK(适用于复杂场景)。

注意事项

  1. 坐标转换库:建议使用成熟的坐标转换库(如gcoord)。
  2. 平台差异:在iOS和Android上测试确认兼容性。
  3. 密钥配置:确保高德地图Key正确且已启用定位服务。

通过以上方法可解决GCJ-02坐标系报错问题,优先推荐方法1的坐标转换方案。

回到顶部