由于经纬度采集小程序的使用量日益增加,导致百度地图可怜的免费逆地理解释使用量300次/天,一下子就用完了。隔壁家高德给的综合总量15000次/天,大大方方。便移植到高德,采用高德官方的1.3版本——AMapWX_SDK_V1.3.0.zip。遗憾的是,发现高德地图逆地理编码居然有几十米的偏差,查了网上、AI,经过各种分析都不行,最后终于找到原因了。
查了百度AI等,主要解释如下:
一、坐标系不对。高德只使用GCJ-02坐标系,故需要转换坐标系;考虑到自己网上找的WGS84转GCJ-02代码可能不靠谱,故改为调用高德提供的坐标转换方法,但还是存在偏移。
二、设置精度不够。发现设置radius根本无效,且extensions=all,本身就是默认的。
剩下其他的理由都不是。百思不得其解。
后面再去看百度地图、腾讯地图的开发文档,做对比,突然发现百度、腾讯地图是可以直接对给定的经纬度直接解释,并返回地址位置信息,所以解析较为准确;而高德地图不会对给定的经纬度直接解析并反馈位置信息,而是对给定的经纬度解析后返回周边10-30个POI(兴趣点),并将第[0]号的兴趣点作为位置信息进行反馈。这样明显就造成了反馈回来的位置存在偏移。逆天(坑爹)啊!

后面也用了高德的Web API测试,发现Web API直接返回地址,但也不是准确的地址,也还是跟POI[0]点一样的信息。
最后计划再次换到腾讯地图试试看,不过腾讯地图使用的人员不多,怕存在不少地点更新滞后的问题。经测试腾讯地图中,当设置POI=0时,是可以直接对给定的经纬度进行直接解释的,故暂时采用这个方案吧。
以下是百度搜索AI给出的解释:
高德地图逆地理编码(逆地理解析)偏差主要源于坐标系不匹配(如WGS-84未转GCJ-02)、定位精度不足、地图数据滞后或API参数配置不当,典型偏移可达50–500米。
坐标系必须统一:高德API默认使用 GCJ-02 坐标系;若输入为GPS设备获取的 WGS-84 坐标,须先调用高德 坐标转换接口 显式转换(coordsys=gps),否则系统性偏移不可避免。
输入格式需严格:location 参数必须为 “经度,纬度”(如 116.397428,39.9042),无空格、顺序正确,且使用 Web 服务 Key(非 JS/API Key)。
优化查询精度:设置合理 radius(如 50–100 米)并启用 extensions=all 获取更细粒度地址(含 POI、门牌等);避免在高楼/地下等弱 GPS 环境直接使用原始定位,可结合 Wi-Fi/基站辅助或滤波算法(如卡尔曼)提升输入质量。
数据更新局限:新建区域、城中村或快速路立交可能因 POI/路网未同步导致“错判到主干道”或“跨区”,属高德地图数据延迟,非接口错误;可结合多源地址交叉验证(如腾讯/百度逆解析)或本地缓存高频点提升鲁棒性。
边界与行政归属误差:GPS 漂移靠近区县边界时易误判归属,高德基于网格匹配而非精确几何,此为算法设计权衡;若需高精度行政判定,建议用 adcode 而非 city/district 字段,并定期校验最新行政区划编码。
若为开发者:勿自行实现 GCJ-02/WGS-84 转换算法(非官方、有合规风险),优先调用高德官方转换服务;若为普通用户:偏差属正常,建议以地图 App 内“我的位置”为准,逆解析 API 本就非厘米级定位工具。

QWQ科学上网平台(FanQiang),属于邀请才能注册,真实可用
发表评论