r***@qq.com
r***@qq.com
  • 发布:2026-07-11 20:52
  • 更新:2026-07-11 20:53
  • 阅读:39

【报Bug】Uni-app 的百度地图,坐标系怎么又变了???

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 11

HBuilderX类型: 正式

HBuilderX版本号: 5.15

手机系统: 全部

手机厂商: 华为

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

测试过的手机:

华为Mate X6(鸿蒙4.3.0)、荣耀200Pro(MagicOS 10.0/安卓16)、iPhoneXR(14.3)、荣耀20(鸿蒙4.0.0)等

示例代码:

操作步骤:

预期结果:

要是能紧急改回5.07版本以前那种就最好

实际结果:

见BUG 描述

bug描述:

是vue2页面的<map>组件调用了百度地图;这个页面还用到了subnvue子窗口

HBuilderX 5.07及之前,云端打包,百度坐标系的点在百度地图上绘制,iOS端出现整体偏移,通过js把点位转成高德坐标系后正常;安卓端不做处理,点位显示正常。(安卓端打自定义调试基座,也出现整体偏移)

上述现象持续了很多年,起码是22年4月~26年6月

HBuilderX 更新到5.14、5.15版本云端打包,发现安卓端出现一样的整体偏移;利用和iOS一样的点位转换方法后才显示正常。初步确定是安卓端的百度地图点位描绘的坐标系发生了变化。

===

相关问题:
https://ask.dcloud.net.cn/question/215717
https://ask.dcloud.net.cn/question/219104

2026-07-11 20:52 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

感谢您的反馈。针对您提交的 Bug,官方评审意见如下:

1. Bug 反馈内容完整性分析

  • BUG 描述:描述较为清晰,明确指出了 HBuilderX 5.07 及之前版本与 5.14/5.15 版本在安卓端对百度地图点位描绘坐标系的处理差异,并提供了相关历史问题链接,有助于官方排查。但缺少具体的 manifest.json 中百度地图 SDK 配置信息以及具体的点位转换 JS 代码片段。
  • 代码示例:填写为“无”。缺乏可复现的代码示例,官方人员无法直接验证您的点位转换逻辑和 <map> 组件配置,需要您补充一个最小化可运行的示例代码。
  • 复现步骤:填写为“无”。缺乏明确的操作步骤,官方人员无法根据反馈直接复现问题。需要您补充包括如何配置百度地图、如何传入坐标点、在何种情况下触发偏移等详细步骤。
  • 预期结果:提出“紧急改回5.07版本以前那种”的诉求。这一预期不太合理,因为根据历史反馈,5.07 之前安卓端和 iOS 端在百度地图坐标系处理上本身就存在不一致的情况(安卓端使用百度 BD09 坐标系,iOS 端仍使用 GCJ02 坐标系),并非一个统一的标准行为。官方更倾向于统一坐标系处理逻辑,而非回退到历史的不一致状态。
  • 实际结果:描述了安卓端出现整体偏移,需转换坐标系后正常。这一现象符合坐标系不一致时的表现,属于正常的技术偏差,并非误报。
  • 分类信息:包含了 HBuilderX 版本号(5.15)、手机 OS 平台(全部)、Vue 版本(Vue2)、手机厂商(华为)等基本信息,但缺少手机系统版本号和具体机型。

2. Bug 是否成立分析

根据知识库信息,您的反馈反映的是一个长期存在的坐标系处理机制问题,而非单纯的版本回归 Bug。

在 uni-app 中,<map> 组件默认使用的是国测局 GCJ02 坐标系。当在 App 端配置使用百度地图时,由于百度地图使用的是自有的 BD09 坐标系,如果传入的点位坐标未进行转换,就会出现偏移。

根据社区历史反馈 【报Bug】uniapp map地图安卓和ios 坐标点偏差,在 HBuilderX 5.07 及之前的版本中,虽然配置了百度地图 SDK,但 iOS 端运行时 <map> 组件的坐标系仍然是 GCJ02,而安卓端的百度地图坐标系是 BD09。这就导致了相同的经纬度在两端展示位置不一样。您在反馈中提到的“HBuilderX 5.07及之前...安卓端不做处理,点位显示正常”以及“通过js把点位转成高德坐标系后正常”,正是因为安卓端百度地图实际使用的是 BD09 坐标系,而您的数据源可能本身就是 BD09 或经过了相应处理。

在 HBuilderX 更新到 5.14、5.15 版本后,安卓端百度地图点位描绘的坐标系处理可能发生了变化,更趋向于统一或调整了底层 SDK 的坐标系对接逻辑,导致原本不需要转换的安卓端也需要进行坐标转换才能正常显示。

建议方案:

由于这是由于不同地图服务商坐标系差异导致的,建议您在开发中统一进行坐标系处理。您可以参考以下方案:

  1. 统一使用 GCJ02 坐标系:在将点位数据传递给 <map> 组件前,确保所有坐标都转换为 GCJ02 坐标系。如果您的数据源是 BD09,需要将其转换为 GCJ02。
  2. 使用 plus.maps.Map.convertCoordinates 进行转换:在 App 端,您可以使用 plus.maps 提供的坐标转换方法将第三方坐标系坐标转换成当前地图的坐标系坐标。具体可参考 plus.maps.Map.convertCoordinates 文档
  3. 考虑使用高德地图:如果业务允许,App 端建议使用高德地图。高德地图默认使用 GCJ02 坐标系,与 <map> 组件默认坐标系一致,可以避免 BD09 与 GCJ02 之间的转换问题。

为了进一步确认 5.14/5.15 版本中安卓端百度地图坐标系的具体变化,建议您补充完整的代码示例和复现步骤,以便官方进行更精确的排查。

内容为 AI 生成,仅供参考

要回复问题请先登录注册