2***@qq.com
2***@qq.com
  • 发布:2025-12-19 12:02
  • 更新:2025-12-19 12:02
  • 阅读:22

【报Bug】咨询下uniapp打包h5低于特定版本,高德地图是否消耗“坐标转换”额度,不配置gj02也会强制消耗

分类:uni-app

产品分类: uniapp/H5

PC开发环境操作系统: Windows

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

HBuilderX类型: 正式

HBuilderX版本号: 4.08

浏览器平台: Chrome

浏览器版本: 1

项目创建方式: HBuilderX

App下载地址或H5⽹址:

示例代码:

场景一
uni.getLocation({
isHighAccuracy: true,
success: res => {
场景二
uni.getLocation({
isHighAccuracy: true,

场景三
uni.startLocationUpdate({
success: () => {}
})

操作步骤:

预期结果:

是否升级uniapp打包版本

实际结果:

bug描述:

// 这两种写法在 H5 平台都可能触发转换:
uni.getLocation({ isHighAccuracy: true })
uni.getLocation({ type: 'gcj02', isHighAccuracy: true })
根据 uniapp 官方文档,你提到的 "默认 wgs84 不消耗转换额度" 在 H5 平台并不完全正确。
关键发现:
文档明确指出:
Web平台本API之前调用了腾讯地图的gcj02坐标免费转换接口,该接口从2024年7月18日起被腾讯逐步下线...
这意味着:
uniapp H5 平台的 getLocation 实现,内部默认依赖坐标转换服务
即使用户不指定 type: 'gcj02',框架也可能自动进行 WGS84 → GCJ02 转换
为什么会产生消耗?
JavaScript
复制
// 这两种写法在 H5 平台都可能触发转换:
uni.getLocation({ isHighAccuracy: true })
uni.getLocation({ type: 'gcj02', isHighAccuracy: true })
原因:
H5 平台定位机制特殊:浏览器提供的原生坐标是 WGS84,但中国地图服务商(高德、腾讯)使用 GCJ02 坐标系
框架自动转换:为了兼容 <map> 组件和 uni.openLocation 等国产坐标系生态,uniapp 内部强制进行坐标转换
服务商要求:高德 JS SDK 在 H5 端返回的坐标本身就是 GCJ02,调用其服务即产生转换消耗

  1. 技术验证
    查看文档 H5 平台注意事项:
    2.9.9 版本以上,优化 uni.getLocation 支持通过 IP 定位...需填写三方地图服务平台的秘钥(key)
    这说明:
    H5 定位必须配置第三方 Key
    一旦配置 Key,所有定位请求都会经过服务商的坐标转换管道

业务层优化:
减少定位调用频率
增加缓存策略(cacheTimeout)
非必要场景使用IP定位(不消耗坐标转换额度)

2025-12-19 12:02 负责人:无 分享
已邀请:
Ask小助手

Ask小助手 - Ask社区AI助手

该bug反馈内容基本完整但存在不足:标题清晰描述了问题核心;BUG描述较为详细,解释了H5平台坐标转换机制及消耗原因,但未明确说明具体消耗额度的表现(如错误码或计费记录);代码示例为片段形式,缺少完整可运行上下文(如manifest配置);复现步骤和实际结果均标注"无",缺乏操作性细节;预期结果表述模糊("是否升级"而非具体期望行为);分类信息包含必要环境版本(HBuilderX 4.08)。

经核查知识库,问题成立:

非概念性问题,属真实技术限制。解决方案:

  1. 必须升级至HBuilderX 4.24+
  2. 在manifest中配置高德/腾讯地图key
  3. 业务层优化:减少定位频率、启用cacheTimeout缓存、非必要场景改用IP定位
  4. 注意H5平台坐标转换消耗与type参数无关,因框架底层已强制转换
内容为 AI 生成,仅供参考

要回复问题请先登录注册