我使用的是真正的Android设备(5.1版本)
我能够确定使用反应 - 原生地图(我的应用程序内的地图正确蓝点位置)+我能够使用谷歌地图应用程序,并转到我的位置(GPS工作)我的位置。
我使用的是大超时,切换enableHighAccuracy真假,删除选项...等。所有未能获得navigator.geolocation获取数据。
这里是我的代码:
var options = {
enableHighAccuracy: true,
timeout: 5000,
maximumAge: 0
};
function success(pos) {
var crd = pos.coords;
console.log('Your current position is:');
console.log(`Latitude : ${crd.latitude}`);
console.log(`Longitude: ${crd.longitude}`);
console.log(`More or less ${crd.accuracy} meters.`);
};
function error(err) {
console.warn(`ERROR(${err.code}): ${err.message}`);
};
navigator.geolocation.getCurrentPosition(success, error, options);
我越来越:ERROR(3): Location request timed out
两件事情。
1)这实际上不是高精度响应高超时如果坐标没有被高速缓存2)一些设备具有与highAccuracy设置的问题。
尝试把30000毫秒超时,删除精度高,直到找到一个设置工程。
编辑:我发现长的bug,我记得形式做出响应本机:https://github.com/facebook/react-native/issues/7495
所以,试试这个:
1)取下maximumAge属性2)如果不工作,除去所述第三参数和从本机模块使用默认值。这意味着,不发送选项对象。这应该工作。
卸下maximumAge解决这里的问题!万一有人仍然有在2019年这个问题
我用这个和它的作品罚款:{enableHighAccuracy:假的,超时:50000}
async watchPosition() {
console.log('watchPosition');
await navigator.geolocation.getCurrentPosition(
(position) => {
console.log('Position -> ',position);
},
(error) => console.log(error)
{enableHighAccuracy: false, timeout: 50000}
);
}
要请求访问的位置,你需要将下面的行添加到您的应用程序的AndroidManifest.xml:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
。
对于API> = 23的机器人,你需要需要额外的步骤来检查:您需要申请使用ACCESS_FINE_LOCATION
API的PermissionsAndroid
许可。
PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
title: "Location Accessing Permission",
message: "App needs access to your location"
}
);
只有经过运行navigator.geolocation.getCurrentPosition(success, error, options);