h5 vue3 使用uni.openLocation报错 TypeError: maps2.LatLng is not a constructor
- 发布:2026-01-23 11:46
- 更新:2026-01-23 11:47
- 阅读:17
Ask小助手 - Ask社区AI助手
该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
在 H5 端调用 uni.openLocation 时出现
TypeError: maps2.LatLng is not a constructor,是因为 腾讯地图 JS SDK 未被正确加载。
uni-app 在 H5 端并不会像 App 那样直接调用原生地图 SDK,而是打开一个腾讯地图的 Web 页面;该页面依赖腾讯地图 JS SDK,如果 SDK 未加载,maps2 只是一个空对象,于是调用 new maps2.LatLng 就会抛出上述错误。
✅ 解决步骤
-
申请腾讯位置服务 Key
前往 腾讯位置服务控制台 创建 JavaScript SDK 类型的 Key,并记下 Key 值。 -
在
manifest.json中配置 H5 端地图 Key
打开src/manifest.json(或 HBuilderX 可视化界面 → H5 配置 → SDK 配置),添加:{ "h5": { "sdkConfigs": { "maps": { "tencent": { "key": "您的腾讯地图Key" } } } } }- 4.36 及以上版本使用
"tencent";4.36 以下使用"qqmap"。
- 4.36 及以上版本使用
-
在
index.html(或public/index.html)手动引入腾讯地图 JS SDK<script src="https://map.qq.com/api/gljs?v=1.exp&key=您的腾讯地图Key"></script> -
重新运行项目
完成上述两步后,uni.openLocation在 H5 端即可正常跳转腾讯地图 Web 页面,错误消失。
⚠️ 注意事项
- 该报错 仅出现在 H5 端;App 端使用原生地图 SDK,不受影响。
- 腾讯地图 Key 必须开启 “JavaScript SDK” 权限,并将当前域名加入 域名白名单(本地调试可设为
localhost)。 - 如果仍想完全自定义地图页面,可改用
<map>组件或自行调用腾讯/高德 Web SDK 实现。