2010-02-27 97 views
1

這是我簡單的函數(「mycompass」是我的身體一個div),用於當指南針「輪」做一個完整的旋轉從0到某種原因旋轉WebKit的問題

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); 
} 

360它回到0而不是「虛擬」361 ...等等。不能夠理解,從0和360沒有區別...

我不知道如何計算一種讓車輪順時針和逆時針順滑的方法

另一種方法來把這個問題stion是:

如何將我的對象從例如15deg旋轉到270deg,逆時針方向而不是順時針旋轉?我怎麼能告訴我的腳本那個谷?

+0

你已經問過這個問題,我已經給你一個答案。你將不得不發佈更多的代碼;你已經遺漏了「導航器」,「指南針」,「watchHeading」函數等等。這不是一個真正的Javascript問題,它更多的是關於簡單的模算術。 – Pointy 2010-02-27 23:10:31

+0

我一直在問,因爲我很驚訝沒有人真的能夠解決這個問題。 – Francesco 2010-02-28 01:33:43

+0

在這個例子中,如果你點擊第一個E clokwise,那麼S 它簡單地做了什麼sript。 – Francesco 2010-02-28 01:35:45

回答

2

這是我的解決辦法,但我還是老樣子有問題,當車輪度== -360或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); 
     } 
0

同樣,這裏是如何做到這一點的例子:http://gutfullofbeer.net/compass.html

+0

我仍然不認爲這是正確的例子,因爲這個指南針是愚蠢的廣告不承認兩點之間的最短長度,它只是從A到B而不要求「是從A向B旋轉還是從B向後旋轉? 「 就像一個真正的指南針 – Francesco 2010-02-28 01:32:20