我正在使用真正的安卓设备(5.1版(
我能够使用反应原生地图确定我的位置(在我的应用程序内地图上的正确蓝点位置(+我能够使用谷歌地图应用程序并转到我的位置(GPS工作(。
我正在使用一个很大的超时,将启用高精度切换为真和假,删除选项......等。都未能获得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
为时已晚,但它可以帮助其他人。
地理位置已从反应本机.60版本中提取。如果您需要替代解决方案
安装反应原生社区/地理位置:
npm install @react-native-community/geolocation --save
react-native link @react-native-community/geolocation
然后,要请求访问位置信息,您需要将以下行添加到应用的 Android 清单中.xml
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
用法:
import Geolocation from '@react-native-community/geolocation';
Geolocation.getCurrentPosition(info => console.log(info));
两件事。
1(如果坐标没有缓存,这实际上不是高精度响应的高超时2( 某些设备在高精度设置方面存在问题。
尝试将 30000 毫秒作为超时并删除高精度,直到找到一个有效的设置。
编辑:我发现了我从React Native中记住的长错误:https://github.com/facebook/react-native/issues/7495
所以,试试这个:
1( 删除最大年龄属性2( 如果这不起作用,请删除第三个参数并使用本机模块中的默认值。意思是,不要发送选项对象。这应该行得通。
删除最大值解决了这里的问题!以防万一有人在2019年或之后仍然遇到此问题
要请求访问位置信息,您需要在应用的 AndroidManifest .xml 中添加以下行:<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
。
对于 API >= 23 的 android,您需要执行额外的步骤来检查:您需要使用 PermissionsAndroid
API 请求ACCESS_FINE_LOCATION
权限。
PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
title: "Location Accessing Permission",
message: "App needs access to your location"
}
);
只有在那次运行之后navigator.geolocation.getCurrentPosition(success, error, options);
我使用了这个,它工作正常:{启用高精度:假,超时:50000}
async watchPosition() {
console.log('watchPosition');
await navigator.geolocation.getCurrentPosition(
(position) => {
console.log('Position -> ',position);
},
(error) => console.log(error)
{enableHighAccuracy: false, timeout: 50000}
);
}