我正在开发一个需要知道用户设备指向的指南针方向的移动网络项目。现在非常简单,但这就是我所拥有的:
var updateDirection = function (evt) {
$("#direction").val(evt.alpha);
};
window.addEventListener("deviceorientation", updateDirection);
根据我到目前为止的研究,事件的 alpha 通道应该是指南针位置。但是,我观察到(并阅读)有多种基于操作系统和浏览器的实现。
- 在我的 HTC 智能手机、Chrome 或默认的 Android 浏览器中,当我将手机完全垂直地保持在“自拍”位置时,我只能获得合理的读数(0 度 = 北,90 = 东,依此类推)。手机的任何角度都会使读数相距甚远。
- 在我使用 Chrome 的 Surface Pro 上,我无法获得大于 50 的读数。
- 在我使用 Edge 的 Surface Pro 上,我得到了非常合理的读数,但只有当我将设备水平握住时,就好像它放在桌子上一样。
人们似乎很可能已经在移动浏览器中获得了指南针方向,而不管设备如何。有没有我可以用来执行此操作的库?或者是否有必要为许多不同的特定场景编写简单的代码,比如这个例子,它也不适用于列出的所有设备: