首页 > 解决方案 > 使用 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 版本中都支持?

标签: react-nativegps

解决方案


  1. 无需删除maximumAge,只需输入0(maximumAge:0)。如果你删除它,那么最后一个位置将被缓存。

  2. 并且 enableHighAccuracy 设置为 false。

  3. 做更多的超时。

地理位置

maximumAge (ms) - 是一个正值,表示可接受返回的可能缓存位置的最大年龄(以毫秒为单位)。如果设置为 0,则意味着设备不能使用缓存的位置,必须尝试检索真实的当前位置。如果设置为 Infinity,设备将始终返回缓存位置,无论其年龄如何。默认为无限

记得在 AndroidManifest.xml 文件中使用权限

清单.permission


推荐阅读