Compass 罗盘

优质
小牛编辑
129浏览
2023-12-01

获得该设备的当前朝向。

方法:

  • compass.getCurrentHeading
  • compass.watchHeading
  • compass.clearWatch

参数:

  • compassSuccess
  • compassError
  • compassOptions

compass.getCurrentHeading

获取罗盘的当前朝向。

简单的范例:

navigator.compass.getCurrentHeading(compassSuccess, compassError, compassOptions);

说明:

罗盘是一个检测设备方向或朝向的传感器,使用度作为衡量单位,取值范围从0度到359.99度。

通过compassSuccess回调函数返回罗盘朝向数据

支持的平台:

  • Android
  • iPhone

简单的范例:

function onSuccess(heading) {
alert('Heading: ' + heading);
}
function onError() {
alert('onError!');
}
navigator.compass.getCurrentHeading(onSuccess, onError);

完整的范例:

<SCRIPT charset=utf-8 src="phonegap.js"></SCRIPT>
<SCRIPT>
  
  // 等待加载PhoneGap
  document.addEventListener("deviceready", onDeviceReady, false);
  
  // PhoneGap加载完毕
  function onDeviceReady() {
    navigator.compass.getCurrentHeading(onSuccess, onError);
  }
  
  // onSuccess: 返回当前的朝向数据
  function onSuccess(heading) {
    alert('Heading: ' + heading);
  }
  
  // onError: 返回朝向数据失败
  function onError() {
    alert('onError!');
  }
  
</SCRIPT> 
 <h1>Example</h1> 
<p>getCurrentHeading</p>

compass.watchHeading

在固定的时间间隔获取罗盘朝向的角度。

var watchID = navigator.compass.watchHeading(compassSuccess, compassError, [compassOptions]);

说明:

罗盘是一个检测设备方向或朝向的传感器,使用度作为衡量单位,取值范围从0度到359.99度。

compass.watchHeading每隔固定时间就获取一次设备的当前朝向。每次取得朝向后,headingSuccess回调函数会被执行。通过compassOptions对象的frequency参数可以设定以毫秒为单位的时间间隔。

返回的watch ID是罗盘监视周期的引用,可以通过compass.clearWatch调用该watch ID以停止对罗盘的监视。

支持的平台:

  • Android
  • iPhone

简单的范例:

function onSuccess(heading) {
  var element = document.getElementById('heading');
  element.innerHTML = 'Heading: ' + heading;
}
  
function onError() {
  alert('onError!');
}
  
var options = { frequency: 3000 };    //每隔3秒更新一次
  
var watchID = navigator.compass.watchHeading(onSuccess, onError, options);

完整的范例:

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
  
  // watchID 是当前“watchHeading”的引用
  var watchID = null;
  
  // 等待加载PhoneGap
  document.addEventListener("deviceready", onDeviceReady, false);

  
  // PhoneGap加载完毕
  function onDeviceReady() {
    startWatch();
  }
  
  // 开始监视罗盘
  function startWatch() {
  
    // 每隔3秒钟更新一次罗盘的朝向信息
    var options = { frequency: 3000 };
       
    watchID = navigator.compass.watchHeading(onSuccess, onError, options);
  }
  
  // 停止监视罗盘
  function stopWatch() {
    if (watchID) {
      navigator.compass.clearWatch(watchID);
      watchID = null;
    }
  }
  
  // onSuccess: 返回罗盘的当前朝向
  function onSuccess(heading) {
    var element = document.getElementById('heading');
    element.innerHTML = 'Heading: ' + heading;
  }
  
  // onError: 获取罗盘朝向失败
  function onError() {
    alert('onError!');
  }
  
</script>
<div id="heading">Waiting for heading...</div>
<button onclick="startWatch();">Start Watching</button>
<button onclick="stopWatch();">Stop Watching</button>

compass.clearWatch

停止watch ID参数指向的罗盘监视。

navigator.compass.clearWatch(watchID);
  • watchID: 由compass.watchHeading返回的引用标示。

支持的平台:

  • Android
  • iPhone

简单的范例:

var watchID = navigator.compass.watchHeading(onSuccess, onError, options);
// ... 后继处理 ...
navigator.compass.clearWatch(watchID);

完整的范例:

<script type="text/javascript" charset="utf-8" src="phonegap.js"></script>
<script type="text/javascript" charset="utf-8">
  
  // watchID是当前 “watchHeading” 的引用
  var watchID = null;
  
  // 等待加载PhoneGap
  document.addEventListener("deviceready", onDeviceReady, false);
  
  // PhoneGap加载完毕
  function onDeviceReady() {
    startWatch();
  }
  
  // 开始监视罗盘
  function startWatch() {
     
    // 每隔3秒钟更新一次罗盘数据
    var options = { frequency: 3000 };
  
    watchID = navigator.compass.watchHeading(onSuccess, onError, options);
  }
  
  // 停止监视罗盘
  function stopWatch() {
    if (watchID) {
      navigator.compass.clearWatch(watchID);
      watchID = null;
    }
  }
  
  // onSuccess: 返回罗盘的当前朝向
  function onSuccess(heading) {

    var element = document.getElementById('heading');
    element.innerHTML = 'Heading: ' + heading;
  }
  
  // onError: 获取罗盘朝向失败
  function onError() {
    alert('onError!');
  }
  
</script>
<div id="heading">Waiting for heading...</div>
<button onclick="startWatch();">Start Watching</button>
<button onclick="stopWatch();">Stop Watching</button>

compassSuccess

提供罗盘朝向信息的onSuccess回调函数。

function(heading) {
// 进一步处理
}

参数:

  • heading:在某一时刻的罗盘朝向角度 (从0度到359.99度之间)。(数字类型)

范例:

function onSuccess(heading) {
alert('Heading: ' + heading);
}

compassError

罗盘方法的onError回调函数。

function() {
// 错误处理
}

compassOptions

定制检索罗盘朝向的可选参数。

选项:

  • frequency:多少毫秒获取一次罗盘朝向。(数字类型)(默认值:100)