react-native - 使用 sim 网络在没有 GPS 或互联网的情况下检测用户当前位置以做出本机反应
问题描述
我想在没有互联网的情况下获取用户当前位置(仅在 android 中)并通过 SMS 发送。我尝试在本机反应中使用此代码:
navigator.geolocation.getCurrentPosition(
(position) => {
let initialPosition = JSON.stringify(position);
console.log(initialPosition);
},
(error) => console.log(JSON.stringify(error)),
{enableHighAccuracy: true, timeout: 15000, maximumAge: 2000 }
);
但是这段代码给了我这个错误:
error : 3 , Location request timed out
我在谷歌和https://github.com/facebook/react-native/issues/中搜索这个问题并尝试多种方法来解决它,如下所示:
enableHighAccuracy: false
或删除选项参数
{enableHighAccuracy: true, timeout: 15000, maximumAge: 2000 }
或删除maximumAge
以及何时删除maximumAge
这项工作,但当删除它时,设备会给我最后检测到的用户位置,该位置可能远离用户当前位置
并尝试使用此库https://github.com/Agontuk/react-native-geolocation-service 获取最后一个解决方案并实现库示例代码: https ://github.com/Agontuk/react-native-geolocation-service/树/主/示例
但是这段代码在 WIFI 上运行良好,当 WIFI 给我Time out
错误时。
我的问题是:
我如何使用 sim 网络在没有 GPS 或 Internet 网络的情况下检测用户当前位置,在许多 Android 设备和 SDK 版本中都支持?
解决方案
无需删除maximumAge,只需输入0(maximumAge:0)。如果你删除它,那么最后一个位置将被缓存。
并且 enableHighAccuracy 设置为 false。
做更多的超时。
maximumAge (ms) - 是一个正值,表示可接受返回的可能缓存位置的最大年龄(以毫秒为单位)。如果设置为 0,则意味着设备不能使用缓存的位置,必须尝试检索真实的当前位置。如果设置为 Infinity,设备将始终返回缓存位置,无论其年龄如何。默认为无限。
记得在 AndroidManifest.xml 文件中使用权限
推荐阅读
- python - 我可以在 model_fn、Estimator、Tensorflow 中使用 python for 循环吗?
- javascript - 如何在 D3.js 中为堆叠栏中的每个文本标签添加背景?
- php - Sage Pay Reporting API - 生成的签名哈希无效
- html - 调整大小时无法居中 div
- javascript - 如何使用 SVG.js 为线条制作动画
- java - 如何在Java中用特殊字符分隔字符串
- c - 失败并出现错误:''operator' 不是有效的安装包
- sql - 递归 CTE 如何在 SQL Server 中工作?
- matlab - 导入 CSV 文件并使用 MATLAB 将其转换为结构
- python - 如何从带有非引号键的字符串中生成有效的 JSON?