# cordova-plugin-device-orientation 這個外掛程式提供了對設備的指南針的訪問。 羅盤是感應器,可檢測的方向或設備通常指從設備的頂部的標題。 它的措施中從 0 度到 359.99,其中 0 是北部的標題。 訪問是通過一個全球 `navigator.compass` 物件。 雖然該物件附加到全球範圍內 `導航器`,它不可用直到 `deviceready` 事件之後。 document.addEventListener("deviceready", onDeviceReady, false); function onDeviceReady() { console.log(navigator.compass); } ## 安裝 cordova plugin add cordova-plugin-device-orientation ## 支援的平臺 * 亞馬遜火 OS * Android 系統 * 黑莓 10 * 瀏覽器 * 火狐瀏覽器的作業系統 * iOS * 泰 * Windows Phone 7 和第 8 (如果在硬體中可用) * Windows 8 ## 方法 * navigator.compass.getCurrentHeading * navigator.compass.watchHeading * navigator.compass.clearWatch ## navigator.compass.getCurrentHeading 獲取當前的羅經航向。羅經航向被經由一個 `CompassHeading` 物件,使用 `compassSuccess` 回呼函數。 navigator.compass.getCurrentHeading(compassSuccess, compassError); ### 示例 function onSuccess(heading) { alert('Heading: ' + heading.magneticHeading); }; function onError(error) { alert('CompassError: ' + error.code); }; navigator.compass.getCurrentHeading(onSuccess, onError); ## navigator.compass.watchHeading 獲取設備的當前標題的間隔時間定期。檢索到的標題,每次執行 `headingSuccess` 回呼函數。 返回的表 ID 引用的指南針手錶的時間間隔。表 ID 可用於與 `navigator.compass.clearWatch` 停止看 navigator.compass。 var watchID = navigator.compass.watchHeading(compassSuccess, compassError, [compassOptions]); `compassOptions` 可能包含以下項: * **frequency**: 經常如何檢索以毫秒為單位的羅經航向。*(Number)*(預設值: 100) * **filter**: 啟動 watchHeading 成功回檔所需的度的變化。當設置此值時,**frequency**將被忽略。*(Number)* ### 示例 function onSuccess(heading) { var element = document.getElementById('heading'); element.innerHTML = 'Heading: ' + heading.magneticHeading; }; function onError(compassError) { alert('Compass error: ' + compassError.code); }; var options = { frequency: 3000 }; // Update every 3 seconds var watchID = navigator.compass.watchHeading(onSuccess, onError, options); ### 瀏覽器的怪癖 隨機生成當前標題的值,以便類比羅盤。 ### iOS 的怪癖 只有一個 `watchHeading` 可以在 iOS 中一次的效果。 如果 `watchHeading` 使用一個篩選器,致電 `getCurrentHeading` 或 `watchHeading` 使用現有的篩選器值來指定標題的變化。 帶有篩選器看標題的變化是與時間間隔比效率更高。 ### 亞馬遜火 OS 怪癖 * `filter`不受支援。 ### Android 的怪癖 * 不支援`filter`. ### 火狐瀏覽器作業系統的怪癖 * 不支援`filter`. ### 泰怪癖 * 不支援`filter`. ### Windows Phone 7 和 8 的怪癖 * 不支援`filter`. ## navigator.compass.clearWatch 別看手錶 ID 參數所引用的指南針。 navigator.compass.clearWatch(watchID); * **watchID**: 由返回的 ID`navigator.compass.watchHeading`. ### 示例 var watchID = navigator.compass.watchHeading(onSuccess, onError, options); // ... later on ... navigator.compass.clearWatch(watchID); ## CompassHeading `CompassSuccess` 回呼函數返回一個 `CompassHeading` 物件。 ### 屬性 * **magneticHeading**: 在某一時刻在時間中從 0-359.99 度的標題。*(人數)* * **trueHeading**: 在某一時刻的時間與地理北極在 0-359.99 度標題。 負值表示不能確定真正的標題。 *(人數)* * **headingAccuracy**: 中度報告的標題和真正標題之間的偏差。*(人數)* * **timestamp**: 本項決定在其中的時間。*(毫秒)* ### 亞馬遜火 OS 怪癖 * `trueHeading`不受支援,但報告相同的值`magneticHeading` * `headingAccuracy`是始終為 0 因為有沒有區別 `magneticHeading` 和`trueHeading` ### Android 的怪癖 * `trueHeading`屬性不受支援,但報告相同的值`magneticHeading`. * `headingAccuracy`屬性始終是 0 因為有沒有區別 `magneticHeading` 和`trueHeading`. ### 火狐瀏覽器作業系統的怪癖 * `trueHeading`屬性不受支援,但報告相同的值`magneticHeading`. * `headingAccuracy`屬性始終是 0 因為有沒有區別 `magneticHeading` 和`trueHeading`. ### iOS 的怪癖 * `trueHeading`屬性只返回位置服務通過以下方式啟用`navigator.geolocation.watchLocation()`. * IOS 4 設備及以上,標題中設備的當前方向的因素,也不引用其絕對的位置,用於支援該方向的應用程式。 ## CompassError 當發生錯誤時,`compassError` 回呼函數情況下會返回一個 `CompassError` 物件。 ### 屬性 * **code**: 下面列出的預定義的錯誤代碼之一。 ### 常量 * `CompassError.COMPASS_INTERNAL_ERR` * `CompassError.COMPASS_NOT_SUPPORTED`