首页 > 解决方案 > 地理位置更新频率取决于 Firefox 中的设备移动

问题描述

我正在使用 geolocation.watchPosition 为移动设备构建一个 HTML/JS 站点,以便在新的 GNSS 位置数据可用时立即显示它们。

在 Android 上的 Chrome 中,我每秒都会获得新的位置数据。在 Android 上的 Firefox 中,只要设备只是缓慢移动,位置更新频率就差得多(例如每分钟只有 2 次左右)。只有在以稳定的速度移动它几秒钟后,更新频率才会增加到大约每秒一次。这似乎是为了节省电力,但它使该功能无法检测缓慢或微小的位置变化(例如,从一个物体缓慢走到几米外的下一个物体)。

有没有办法在 Firefox 中推翻这种行为?

我知道有几篇关于 Firefox 地理定位问题的帖子,但没有关于这个特定问题的帖子。我正在使用 Android 8 手机和 Firefox 90.1.3。

最小代码可在下面和https://jsfiddle.net/Johannes_K/kzquj49r/上找到

<html>
  <head>
    <title>watchPosition test</title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  </head>
  <body>
    <h1>watchPosition test</h1>
    <div id="results">New position data will appear below:<br></div>
  
  <script>
  document.id = navigator.geolocation.watchPosition(success, failure, {
  enableHighAccuracy: true,
  timeout: 10000
  });

  window.onbeforeunload = function() {
    navigator.geolocation.clearWatch(document.id);
  };

  function success(position) {
    var timestamp = new Date();
    document.getElementById("results").innerHTML += timestamp.getHours() + ":" + 
      timestamp.getMinutes() + ":" + timestamp.getSeconds() + " Lat: " + 
      position.coords.latitude + ", Lon: " + position.coords.longitude + "<br>";
  }

  function failure(error) {
    document.getElementById("results").innerHTML += error.message + "<br>";
  }
  </script>
  </body>
</html>

标签: javascriptandroidfirefoxmobilegeolocation

解决方案


推荐阅读