Rotation problème de webkit quand on tourne comme une boussole
-
23-09-2019 - |
Question
est ma fonction simple ( 'de mycompass' est un div dans mon corps)
function watchCompass() {
var suc = function(a){
var r =a.magneticHeading;
document.getElementById('mycompass').style.webkitTransform = "rotateZ("+-r+"deg)";
};
var fail = function(){};
var opt = {};
opt.frequency = 50;
timer = navigator.compass.watchHeading(suc,fail,opt);
}
pour quelque raison quand la boussole « roue » fait une rotation complète de 0 à 360, il retourne à 0 et non au « virtuel » 361 ... etc .. n'est pas en mesure de comprendre que de 0 et 360 il est pas de différence ...
et je ne sais pas comment calculer un moyen d'avoir dans le sens horaire roue repoussage de smoothy et à gauche
une autre façon de poser cette question est:
Comment puis-je tourner mon objext à partir, par exemple, de 15deg à 270deg, dans le sens anti-horaire au lieu de la droite? Comment puis-je dire à mon script qui vale?
La solution
est ma solution, mais je stil avoir des problèmes lorsque le degré de roue == -360 ou 360
var angle = 0;
var lastAngle = 0;
function watchCompass() {
var suc = function(a){
var angle = roundNyc(a.magneticHeading);
l1 = angle - lastAngle;
l2 = 360 - l1;
if( Math.abs(l1) >= Math.abs(l2)){
r = (lastAngle - l2) ;
}else{
r = angle ;
}
lastAngle = r;
l1 = 0;
l2 = 0;
document.getElementById('mycompass').style.webkitTransform = 'rotateZ(' + -r + 'deg)';
};
var fail = function(){};
var opt = {};
opt.frequency = 50;
timer = navigator.compass.watchHeading(suc,fail,opt);
}
Autres conseils
Encore une fois, voici un exemple de la façon de le faire: http://gutfullofbeer.net/compass.html