swan.onCompassChange

工具和真机中的实现有区别,详见API 实现差异swan.onCompassChange - 图1

解释:监听罗盘数据,频率:5次/秒,接口调用后会自动开始监听,可使用swan.stopCompass停止监听。

方法参数

Function callback

callback参数说明

属性名类型说明最低支持版本
directionNumber面对的方向度数
accuracyiOS :Number Android :String精度iOS:表示相对于磁北极的偏差。0 表示设备指向磁北,90 表示指向东,180 表示指向南。Android:枚举值详见下表。3.150.1

accuracy 参数说明

仅适用于 Android。

说明
high高精度
medium中等精度
low低精度
no-contact不可信,传感器失去连接
unreliable不可信,原因未知
unknow ${value}未知的精度枚举值,即该 Android 系统此时返回的表示精度的 value 不是一个标准的精度枚举值。

示例

在开发者工具中预览效果

扫码体验

swan.onCompassChange - 图2请使用百度APP扫码

图片示例

swan.onCompassChange - 图3

swan.onCompassChange - 图4

swan.onCompassChange - 图5

代码示例

  • 在 js 文件中
  1. Page({
  2. onReady() {
  3. let that = this;
  4. swan.onCompassChange(function (res) {
  5. that.setData({
  6. direction: parseInt(res.direction, 10)
  7. });
  8. that.updateProgress(res.direction);
  9. });
  10. },
  11. updateProgress(direction) {
  12. let leftdeg;
  13. let rightdeg;
  14. let deg = +direction;
  15. if (deg > 180) {
  16. leftdeg = 180;
  17. rightdeg = 180 - deg;
  18. } else {
  19. leftdeg = -deg;
  20. rightdeg = 0;
  21. }
  22. this.setData({
  23. leftdeg: leftdeg,
  24. rightdeg: rightdeg
  25. });
  26. }
  27. });

错误码

Android

错误码说明
1001执行失败

iOS

错误码说明
202解析失败,请检查参数是否正确
1001设备不支持