<template>
<view>
<text>当前经度: {{ longitude }}</text>
<text>当前纬度: {{ latitude }}</text>
<text>当前方向: {{ direction }}</text>
</view>
</template>
<script>
export default {
data() {
return {
longitude: '', // 当前经度
latitude: '', // 当前纬度
direction: '' // 当前方向
};
},
mounted() {
this.initCompass();
},
methods: {
initCompass() {
uni.getLocation({
type: 'gcj02',
success: (res) => {
this.longitude = res.longitude;
this.latitude = res.latitude;
// 监听设备方向变化
uni.onCompassChange((res) => {
this.direction = res.direction;
});
// 开始监听设备方向
uni.startCompass();
},
fail: (error) => {
console.log('获取位置失败', error);
}
});
}
},
onUnload() {
uni.stopCompass(); // 停止监听设备方向
}
};
</script>

- 发布:2024-01-10 18:38
- 更新:2024-01-15 17:51
- 阅读:240
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 19045.3803
HBuilderX类型: 正式
HBuilderX版本号: 3.99
手机系统: Android
手机系统版本号: Android 14
手机厂商: VIVO, IPHONE
手机机型: iq00 z3,苹果XR
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
多台手机测试,同一个方向结果会不同,同一台手机,第一次进去与第n次进入时,保持角度不变,获取到的值也有可能不一致,偏差太大
多台手机测试,同一个方向结果会不同,同一台手机,第一次进去与第n次进入时,保持角度不变,获取到的值也有可能不一致,偏差太大
预期结果:
同一台手机,不管进去多少次,值会有一点偏差,但不至于偏差超过45°那么夸张,不同手机的偏差值也太大了
同一台手机,不管进去多少次,值会有一点偏差,但不至于偏差超过45°那么夸张,不同手机的偏差值也太大了
实际结果:
偏差太大了,苹果和安卓有时候角度一直,偏差甚至超过180°了
偏差太大了,苹果和安卓有时候角度一直,偏差甚至超过180°了
bug描述:
onCompassChange在h5端,不同手机获取到的值不一样,重新进去页面时,同一部手机获取到的值与上一次获取到的值也不一样
1 个回复
DCloud_UNI_OttoJi - 日常回复 uni-app/x 问题,如果艾特我没看到,请主动私信
api 的具体返回值是微信小程序返回的,可以到微信社区进行搜索和反馈。关联问题 https://developers.weixin.qq.com/community/search?query=onCompassChange