我想在没有互联网的情况下获取用户当前的位置(仅在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版本?
答案 0 :(得分:0)
无需删除maximumAge,只需输入0(maximumAge:0)即可。如果删除它,则最后一个位置将被缓存。
并将enableHighAccuracy设置为false。
设置更多超时时间。
maximumAge(ms)-是一个正值,指示可以返回的可能缓存位置的最大年龄(以毫秒为单位)。如果设置为0,则意味着设备无法使用缓存的位置,而必须尝试检索实际的当前位置。如果设置为Infinity,则设备将始终返回缓存的位置,而不管其寿命如何。 默认为INFINITY 。
记住要在AndroidManifest.xml文件中使用权限