使用SIM卡网络来检测用户当前位置,而无需在本机中使用GPS或互联网

时间:2018-07-14 05:47:39

标签: react-native gps

我想在没有互联网的情况下获取用户当前的位置(仅在android中)并通过短信发送。我在react native中尝试使用此代码:

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

然后我也在google中搜索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/tree/master/example

但是此代码仅适用于WIFI,并且当WIFI出现错误Time out时。

我的问题是:

如何在不使用GPS或互联网网络的情况下使用sim网络来检测用户当前位置,React Native支持许多android设备和SDK版本?

1 个答案:

答案 0 :(得分:0)

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

  2. 并将enableHighAccuracy设置为false。

  3. 设置更多超时时间。

Geolocation

  

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

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

Manifest.permission