compass.watchHeading
À intervalle régulier, obtenez la direction de la boussole en degrés.
var watchID = navigator.compass.watchHeading(compassSuccess, compassError, [compassOptions]);
Description
La boussole est un capteur qui détecte la direction ou la position vers laquelle l'appareil pointe. Il mesure la direction en degrés de 0 à 359.99.
Le compass.watchHeading
obtient la direction actuelle de l'appareil à intervalle régulier. Chaque fois que la direction est récupérée, la fonction de callback headingSuccess
est exécutée. Spécifiez l'intervalle, en millisecondes, via le paramètre frequency
dans l'objet [compassOptions](parameters/compassOptions.html)
.
L'ID de surveillance retourné référence l'intervalle de surveillance de la boussole. L'ID de surveillance peut être utilisé avec [compass.clearWatch](compass.clearWatch.html)
pour arrêter de surveiller la boussole.
Plates-formes prises en charge
- Android
- BlackBerry 10
- iOS
- Tizen
- Windows Phone 7 et 8 (s'il est disponible dans le matériel)
- Windows 8
Petit exemple
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);
Exemple complet
<!DOCTYPE html>
<html>
<head>
<title>Compass Example</title>
<script type="text/javascript" charset="utf-8" src="cordova.js"></script>
<script type="text/javascript" charset="utf-8">
// The watch id references the current `watchHeading`
var watchID = null;
// Wait for device API libraries to load
//
document.addEventListener("deviceready", onDeviceReady, false);
// device APIs are available
//
function onDeviceReady() {
startWatch();
}
// Start watching the compass
//
function startWatch() {
// Update compass every 3 seconds
var options = { frequency: 3000 };
watchID = navigator.compass.watchHeading(onSuccess, onError, options);
}
// Stop watching the compass
//
function stopWatch() {
if (watchID) {
navigator.compass.clearWatch(watchID);
watchID = null;
}
}
// onSuccess: Get the current heading
//
function onSuccess(heading) {
var element = document.getElementById('heading');
element.innerHTML = 'Heading: ' + heading.magneticHeading;
}
// onError: Failed to get the heading
//
function onError(compassError) {
alert('Compass error: ' + compassError.code);
}
</script>
</head>
<body>
<div id="heading">Waiting for heading...</div>
<button onclick="startWatch();">Start Watching</button>
<button onclick="stopWatch();">Stop Watching</button>
</body>
</html>
Spécificités iOS
Dans iOS compass.watchHeading
peut également récupérer la direction actuelle de l'appareil lorsqu'elle change d'un certain nombre de degrés. Chaque fois que la direction change du nombre de degrés spécifiés ou plus, la fonction de callback headingSuccess
s'exécute. Spécifier les degrés de changement via le paramètre filter
dans l'objet [compassOptions](parameters/compassOptions.html)
. Désactivez la boussole comme d'habitude en passant l'ID de surveillance retourné à [compass.clearWatch](compass.clearWatch.html)
. Cette fonctionnalité remplace les fonctionnalités précédentes, uniquement sur iOS, watchHeadingFilter
et clearWatchFilter
, qui ont été supprimées dans la version 1.6.
Seulement un watchHeading
peut être utilisé à un moment donné sur iOS. Si un watchHeading
utilise un filtre, un appel à getCurrentHeading
ou watchHeading
utilise la valeur existante de filtre pour spécifier des changements de direction. Surveiller les changements de position avec un filtre est plus efficace qu'avec des intervalles de temps.