2011-05-07 68 views
3

是否可以從Web應用程序使用Javascript在iPhone/Android設備上訪問指南針?一直在尋找全國各地的網,因爲我知道你可以用使用Javascript從webb應用程序訪問設備指南針

window.ondevicemotion =功能(事件)

有誰知道,如果你可以訪問羅盤的信息訪問加速時間?

+0

事情可能已經改變,因爲[這個問題](http://stackoverflow.com/questions/2564219/accessing-iphone-compass-with-javascript)被問到,所以我不打算近距離投票,但它是另一個相同的問題。 – 2011-05-07 03:57:01

+0

雅看到一個...但是隨着4.2版本的更多功能可以訪問加速度計和陀螺儀。 http://www.peterfriese.de/apples-updated-developer-license-this-changes-everything-again/ – Christopher 2011-05-07 04:01:16

+0

我讀過那篇文章,這讓我想知道指南針功能現在是否也可用......會很酷! – Christopher 2011-05-07 04:01:54

回答

4

在iPhone上,您可以獲得像這樣的指南針值。

window.addEventListener('deviceorientation', function(e) { 
    console.log(e.webkitCompassHeading); 
}, false); 

希望得到這個幫助。

+0

Android是否有相應的版本?我寫了一個適用於iOS(Safari和Chrome)的頁面,但不適用於Android。 – 2013-09-26 12:34:50

+0

我想有,但不幸的是,我不知道它。 – 2013-09-26 13:13:30

0

現在看來是跨平臺,請通過Ruadhán O'Donoghue查看這個excellent article

對於Android,它仍然使用window.addEventListener('deviceorientation', ...)但檢查其他事件屬性(event.alpha這是羅盤定向; betagamma也是可用的,其代表的傾斜)。

以下是相關部分(適配)如果鏈路變得不可用:

if(window.DeviceOrientationEvent) { 
     window.addEventListener('deviceorientation', function(event) { 
     var alpha; 
     // Check for iOS property 
     if(event.webkitCompassHeading) { 
      alpha = event.webkitCompassHeading; 
     } 
     // non iOS 
     else { 
      alpha = event.alpha; 
      if(!window.chrome) { 
      // Assume Android stock 
      alpha = alpha-270; 
      } 
     } 
     } 
    } 

另一個使用示例中可以用CodePen