百度智能小程序 監(jiān)聽羅盤數(shù)據(jù)

2020-09-05 14:29 更新

swan.onCompassChange

工具和真機(jī)中的實(shí)現(xiàn)有區(qū)別,詳見 API 實(shí)現(xiàn)差異

解釋:監(jiān)聽羅盤數(shù)據(jù),頻率:5 次/秒,接口調(diào)用后會自動開始監(jiān)聽,可使用 swan.stopCompass 停止監(jiān)聽。Web 態(tài)說明:由于瀏覽器對于 W3C 規(guī)范的實(shí)現(xiàn)差異,onCompassChange 功能在部分瀏覽器(比如 Safari 瀏覽器)下不可用,在功能不可用的情況下,該方法的事件回調(diào)不會被觸發(fā),但該方法會返回一個(gè)錯(cuò)誤對象。

方法參數(shù)

Function callback

callback 參數(shù)說明

屬性名類型說明最低支持版本

direction

Number

面對的方向度數(shù)

accuracy

iOS : Number
Android :String

精度
iOS:表示相對于磁北極的偏差。0 表示設(shè)備指向磁北,90 表示指向東,180 表示指向南。
Android:枚舉值詳見下表。

3.150.1

accuracy 參數(shù)說明

僅適用于 Android。
說明

high

高精度

medium

中等精度

low

低精度

no-contact

不可信,傳感器失去連接

unreliable

不可信,原因未知

unknow ${value}

未知的精度枚舉值,即該 Android 系統(tǒng)此時(shí)返回的表示精度的 value 不是一個(gè)標(biāo)準(zhǔn)的精度枚舉值。

示例 

在開發(fā)者工具中打開


圖片示例

代碼示例

<view class="card-area">
    <view class="wrap">
        <view class="page-top">
            <view class="tip-week">{{title}}</view>
        </view>
        <view class="direction">
            <view class="bg-compass-line"></view>
            <view class="bg-compass" style="transform: rotate(-{{direction}}deg)">
                <view class="num num0" style="transform: rotate({{direction}}deg)">0</view>
                <view class="num num90" style="transform: rotate({{direction}}deg)">90</view>
                <view class="num num180" style="transform: rotate({{direction}}deg)">180</view>
                <view class="num num270" style="transform: rotate({{direction}}deg)">270</view>
            </view>
            <div class="cg-wrap">
                <div class="circle-left-wrap"><div class="circle-left" style="transform:rotate({{leftdeg}}deg);transform-origin:50% 50%"></div></div>
                <div class="circle-right-wrap"><div class="circle-right" style="transform:rotate({{rightdeg}}deg);transform-origin:50% 50%"></div></div>
                <div class="mask">
                    <view class="direction-num">
                        <text>{{direction}}</text>
                        <text class="direction-degree"></text>
                    </view>
                </div>
            </div>
        </view>
        <view class="page-body-btn">
            <view class="middle-btn {{!isWatch ? '' : 'disabled'}}" bind:tap="startWatch">開始監(jiān)聽</view>
            <view class="middle-btn {{!isWatch ? 'disabled' : ''}}" bind:tap="stopWatch">停止監(jiān)聽</view >
        </view>
    </view>
</view>
Page({
    data: {
        title: '旋轉(zhuǎn)手機(jī)即可獲取方位信息',
        direction: 0,
        isWatch: true,
        leftdeg: 0,
        rightdeg: 0
    },

    onReady() {
        swan.onCompassChange(res => {
            this.setData({
                direction: parseInt(res.direction, 10)
            });
            this.updateProgress(res.direction);
        });
    },
    onShow() {
        let isWatch = this.data.isWatch;
        isWatch ? swan.startCompass() : swan.stopCompass();
    },
    startWatch() {
        this.setData('isWatch', true);
        swan.startCompass();
    },
    stopWatch() {
        this.setData('isWatch', false);
        swan.stopCompass();
    },
    updateProgress(direction) {
        let leftdeg;
        let rightdeg;
        let deg = +direction;
        if (deg > 180) {
            leftdeg = 180;
            rightdeg = 180 - deg;
        }
        else {
            leftdeg = -deg;
            rightdeg = 0;
        }
        this.setData({
            leftdeg,
            rightdeg
        });
    }
});

錯(cuò)誤碼

Android

錯(cuò)誤碼說明

1001

執(zhí)行失敗

iOS

錯(cuò)誤碼說明

202

解析失敗,請檢查參數(shù)是否正確

1001

設(shè)備不支持



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號