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?

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top