使用 Javascript 从 Web 应用程序访问设备指南针

Posted

技术标签:

【中文标题】使用 Javascript 从 Web 应用程序访问设备指南针【英文标题】:Access device compass from web app with Javascript 【发布时间】:2011-08-20 14:40:16 【问题描述】:

是否可以通过网络应用在 iphone/android 设备上使用 javascript 访问指南针?我已经在网上找了几个小时了,我知道你可以通过

访问加速度计

window.ondevicemotion = 函数(事件)

有谁知道您是否可以从指南针获取信息??

【问题讨论】:

自从this question 被问到之后,事情可能已经发生了变化,所以我不打算投票结束,但它另一个相同的问题。 你看到了……但是随着 4.2 的发布,更多的功能可以访问,也就是加速度计和陀螺仪。 peterfriese.de/… 我读过那篇文章,让我想知道指南针功能现在是否也可用......会很酷! 【参考方案1】:

在 iPhone 上,您可以像这样获取指南针值。

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

希望对您有所帮助。

【讨论】:

Android 有对应的吗?我写了一个适用于 ios(Safari 和 Chrome)但不适用于 Android 的页面。 我猜有,可惜我不知道。【参考方案2】:

它现在看起来是跨平台的,请通过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 上提供了另一个用法示例。

【讨论】:

以上是关于使用 Javascript 从 Web 应用程序访问设备指南针的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Javascript/PHP 从 Web 应用程序打开移动应用程序(Android 或 iOS)

从 javascript 用于 Web 应用程序的跨浏览器最稳定的模态对话框实现是啥?

强制链接从带有 javascript 的 Web 应用程序在移动 Safari 中打开

Google 通过 OAuth2 身份验证从 JavaScript 客户端联系 API 问题

如何验证客户端应用程序以信任从它发送的消息

如何验证客户端应用程序以信任从它发送的消息