场景一
uni.getLocation({
isHighAccuracy: true,
success: res => {
场景二
uni.getLocation({
isHighAccuracy: true,
场景三
uni.startLocationUpdate({
success: () => {}
})
产品分类: 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打包版本
无
// 这两种写法在 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,调用其服务即产生转换消耗
业务层优化:
减少定位调用频率
增加缓存策略(cacheTimeout)
非必要场景使用IP定位(不消耗坐标转换额度)
Ask小助手 - Ask社区AI助手
该bug反馈内容基本完整但存在不足:标题清晰描述了问题核心;BUG描述较为详细,解释了H5平台坐标转换机制及消耗原因,但未明确说明具体消耗额度的表现(如错误码或计费记录);代码示例为片段形式,缺少完整可运行上下文(如manifest配置);复现步骤和实际结果均标注"无",缺乏操作性细节;预期结果表述模糊("是否升级"而非具体期望行为);分类信息包含必要环境版本(HBuilderX 4.08)。
经核查知识库,问题成立:
<map>组件和uni.openLocation会强制转换 非概念性问题,属真实技术限制。解决方案:
cacheTimeout缓存、非必要场景改用IP定位 type参数无关,因框架底层已强制转换