不能。百度地图js api仅支持标准浏览器环境,而uni-app的app端运行于webview或原生渲染层、小程序端禁用document/window等api,直接引入会报错或白屏;app端须用原生插件(如uni-baidu-map)并配置自定义基座,小程序端只能使用微信内置地图(腾讯地图),h5端仅能跳转百度地图网页版链接。

uni-app 中无法直接调用百度地图 JS API?
不能。百度地图 JS API 明确不支持非浏览器环境,而 uni-app 的 App 端(iOS/Android)运行在 WebView 或原生渲染层,并非标准浏览器上下文;微信小程序端更受平台限制,document、window、script 动态加载等能力被禁用,直接引入 https://api.map.baidu.com/api?v=3.0&ak=xxx 会报 ReferenceError: window is not defined 或白屏无响应。
App 端选点必须用原生插件而非 JS SDK
uni-app 官方推荐且实际可行的方案是使用封装好的原生地图插件,比如 DCloud 官方维护的 uni-app-map(已下架),或社区主流选择:uni-baidu-map(仅 App 端)和 uni-app-x 生态下的高德/腾讯替代方案。但注意:uni-baidu-map 并非百度官方出品,而是基于 Android/iOS 原生 SDK 封装:
- 需在
manifest.json中配置百度 AK(Android 包名、iOS Bundle ID 必须与百度开发者后台一致) - 调用
uni.chooseLocation时传入provider: 'baidu',否则默认走微信或系统地图 - App 端真机调试必须开启“自定义基座”,普通云打包不包含百度 SDK
- 返回坐标是百度坐标系(BD09),若后续要叠加百度 POI 检索或路线规划,必须保持坐标系一致,切勿混用 WGS84 或 GCJ02
微信小程序端只能用腾讯地图或系统地图
微信小程序强制使用 wx.chooseLocation,它底层调用的是微信内置地图(实为腾讯地图),不接受第三方地图 provider 参数。即使你在 uni-app 中写 provider: 'baidu',小程序端也会静默忽略并回退到默认行为。这意味着:
- 你无法在小程序里显示百度地图界面或使用百度 POI 搜索
-
wx.chooseLocation返回的坐标是 GCJ02(火星坐标),不是 BD09,也不支持转成 BD09 的官方接口 - 若需跨端统一导航逻辑,建议后端统一做坐标系转换,或前端用开源库如
coordtransform做近似纠偏(精度损失约 10–50 米) - 调起微信内驾车导航:用
wx.openLocation,传scale和name即可,无需额外 SDK
uni-app 导航跳转要分端处理
没有“一次写完、三端通用”的导航调用。各端唤起方式完全不同:
- App 端(百度地图):
uni.openLocation({ latitude, longitude, name, address, provider: 'baidu' })—— 仅当使用uni-baidu-map插件且自定义基座生效时才有效 - 微信小程序:
wx.openLocation({ latitude, longitude, scale: 18, name, address })—— 必须用wx.前缀,uni.openLocation在小程序里实际就是它 - H5 端:只能跳转百度地图网页版链接,例如
https://map.baidu.com/?latlng=${lat},${lng}&title=${encodeURIComponent(name)},不支持直接唤起手机百度 App(iOS 限制、Android 无通用 scheme) - 注意
latitude/longitude类型必须是 number,字符串会导致 H5 白屏、App 端静默失败
最易被忽略的一点:百度地图原生 SDK 要求 iOS 端在 info.plist 中声明 NSLocationWhenInUseUsageDescription,否则定位失败且无提示;Android 端需在 AndroidManifest.xml 中添加位置权限及百度服务声明——这些不在 uni-app 配置面板里,得手动改原生工程。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











