Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/469.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 移动设备上的绝对设备方向_Javascript_Android_Ios_Mobile - Fatal编程技术网

Javascript 移动设备上的绝对设备方向

Javascript 移动设备上的绝对设备方向,javascript,android,ios,mobile,Javascript,Android,Ios,Mobile,我试图在不同的移动设备(android+IOs)和浏览器中获得绝对的设备定位 以或多或少可靠的方式。我希望能够理解我接收到的方向是否是相对的,而不是显示罗盘,而不是显示错误的值。 我已经在谷歌上来回搜索了好几天,但我还没有找到一个明确的答案(我是) javascript和web开发新手)。 我知道图书馆应该做得很好 但它有一个非商业许可证。我打算在一个潜在的商业项目中使用这个结果,此外,我想了解发生了什么 如今,大多数设备定向事件都返回相对值。 firefox不支持,这是一个实验性的功能,当其他

我试图在不同的移动设备(android+IOs)和浏览器中获得绝对的设备定位 以或多或少可靠的方式。我希望能够理解我接收到的方向是否是相对的,而不是显示罗盘,而不是显示错误的值。
我已经在谷歌上来回搜索了好几天,但我还没有找到一个明确的答案(我是) javascript和web开发新手)。
我知道图书馆应该做得很好 但它有一个非商业许可证。我打算在一个潜在的商业项目中使用这个结果,此外,我想了解发生了什么

如今,大多数设备定向事件都返回相对值。
firefox不支持,这是一个实验性的功能,当其他东西失败时,我可以使用它,但它不能成为主要的解决方案

到目前为止,我已经得到了这条推理路线(伪代码):


我不知道从哪里去了解我会错过多少台设备,如果有更好的方法的话。对于Android,它是自动工作的,对于iOS,它需要点击启动。 这里有一部分代码可供您使用

startBtn.addEventListener("click", startCompass);

function startCompass() {
  if (isIOS) {
    DeviceOrientationEvent.requestPermission()
      .then((response) => {
        if (response === "granted") {
          window.addEventListener("deviceorientation", handler, true);
        } else {
          alert("has to be allowed!");
        }
      })
      .catch(() => alert("not supported"));
  } else {
    window.addEventListener("deviceorientationabsolute", handler, true);
  }
}

function handler(e) {
  const degree = e.webkitCompassHeading || Math.abs(e.alpha - 360);
}
完整的教程在这里,尝试演示也

虽然这可以从理论上回答问题,但在此处包含答案的基本部分,并提供链接供参考。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效-
startBtn.addEventListener("click", startCompass);

function startCompass() {
  if (isIOS) {
    DeviceOrientationEvent.requestPermission()
      .then((response) => {
        if (response === "granted") {
          window.addEventListener("deviceorientation", handler, true);
        } else {
          alert("has to be allowed!");
        }
      })
      .catch(() => alert("not supported"));
  } else {
    window.addEventListener("deviceorientationabsolute", handler, true);
  }
}

function handler(e) {
  const degree = e.webkitCompassHeading || Math.abs(e.alpha - 360);
}