javascript - 地理位置更新频率取决于 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>
解决方案
推荐阅读
- sql - Pivot 中的参数
- bash - Grep - 获取每次出现的行中的字符位置
- python - 保存生成的矢量图层 QGIS 3.6 python 脚本
- reactjs - 父组件状态改变后重新渲染子组件
- vue.js - 如何从非 vue 类调用 vue i18n?
- javascript - 为什么我不能从此链接获取 XML 文档,为什么在字符串中我可以让所有标签括号都变成引号?
- python - 使用 Theano 后端的 Keras Flatten() 层行为不一致
- angular - 无法从子组件访问值:未定义 - Angular 7
- sass - 我可以创建多个 css 类名作为一个语句吗?
- r - 如何有条件地在 r 中拆分数据帧?