uni-app map组件使用百度地图云打包自定义基座运行位置显示偏差

uni-app map组件使用百度地图云打包自定义基座运行位置显示偏差

项目 内容
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win11专业版 24H2
HBuilderX类型 正式
HBuilderX版本号 4.85
手机系统 全部
页面类型 vue
vue版本 vue3
打包方式 云端
项目创建方式 HBuilderX

产品分类: uniapp/App

测试过的手机:

OnePlus Ace2 android16 ios iphoneX ios16

示例代码:

<map style="width: 100%;" :style="{height: ($u.sys().windowHeight - $u.sys().statusBarHeight - 124) + 'px' }"  
        :longitude="mapLong" :latitude="mapLat" :markers="markers">

更多关于uni-app map组件使用百度地图云打包自定义基座运行位置显示偏差的实战教程也可以访问 https://www.itying.com/category-93-b0.html

13 回复

该问题请在专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。

✅ 问题结论 您遇到的“云打包后百度地图位置偏差”基本可以确定是 manifest.json 未正确配置百度地图 SDK 所致。 真机运行使用的是 DCloud 内置的测试配置,而云打包后如果未勾选百度地图模块或未填写正确的 AppKey,App 会 自动回退到高德地图,高德与百度坐标系不同,于是出现“位置偏差”。

✅ 请按以下步骤自查并修复

确认 manifest.json 已勾选百度地图模块 路径:
manifest.json → App模块配置 → 地图 → 勾选“百度地图”

填写百度 AppKey

登录 百度地图开放平台 创建 Android / iOS 应用,获取 AppKey。
在 manifest.json → SDK 配置 → 百度地图 → 填入对应 AppKey。
包名、签名 SHA1、BundleID 必须与百度后台完全一致,否则 SDK 初始化会失败。

统一坐标系

获取定位时指定 type: ‘bd09’:
uni.getLocation({
type: ‘bd09’,
success(res) {
this.mapLat = res.latitude;
this.mapLong = res.longitude;
}
});
如果已有 gcj02 坐标,可使用官方提供的 坐标转换工具 转成 bd09。

验证地图服务商 在 App 启动后执行:
console.log(‘当前地图类型:’, plus.maps.Map.getMapType());
若输出不是 Baidu,说明仍被回退到高德,需回到第 1、2 步检查配置。

重新云打包并安装测试 清理旧包 → 重新云打包 → 安装到新手机 → 对比真机运行与云打包效果。

✅ 仍有问题?请补充以下信息

manifest.json 截图(含百度地图模块 & AppKey 部分,可打码关键信息)。
真机运行 vs 云打包的对比截图(同一地点的地图中心点 & marker 位置)。
控制台日志(过滤 Map 或 baidu 关键字)。

收到这些信息后,我们可以进一步帮您定位。 内容为 AI 生成,仅供参考

更多关于uni-app map组件使用百度地图云打包自定义基座运行位置显示偏差的实战教程也可以访问 https://www.itying.com/category-93-b0.html


写一个固定数据的坐标在自定义基座和正式打包时也会有差异吗?

云打包后在map组件传入gcj02显示有偏差,传入bd09才正常显示,真机运行可以直接传gcj02

回复 亿企查: 请提供一简单的复现问题的示例项目

回复 DCloud_App_Array: <template> <view class="content"> <map style="width: 100%; height: 90vh;" :longitude="mapLong" :latitude="mapLat" :markers="markers"> </map> </view> </template>

<script> export default { data() { return { mapLat: '31.782767', mapLong: '117.245965', markers: [{ id: 1, latitude: 31.782767, longitude: 117.245965, iconPath: '/static/logo.png', width: 38, height: 38 }] } } } </script>
<style> .content { display: flex; flex-direction: column; align-items: center; justify-content: center; } </style>

就很简单,在manifest.json里模块配置好百度地图,云打包就行了

回复 亿企查: 你是 nvue 还是 vue,配置有什么,上传个最简 demo工程吧

回复 DCloud_Android_THB: 我司的电脑有加密无法上传代码项目,vue项目,就最简单的map组件显示一个坐标就行

回复 亿企查: 后续会修复

回复 DCloud_Android_THB: 修复了么?

回到顶部