我有一个应用,要求用户允许该位置。我正在测试应用程序的设备对此没有任何问题。但是,每当我使用其他设备时,它都会显示以下错误:
这是我的代码:
componentDidMount() {
navigator.geolocation.getCurrentPosition((position) => {
let lat = parseFloat(position.coords.latitude)
let long = parseFloat(position.coords.longitude)
let initialRegion = {
latitude: lat,
longitude: long,
latitudeDelta: LATITUDE_DELTA,
longitudeDelta: LONGITUDE_DELTA
}
this.setState({ initialPosition: initialRegion })
this.setState({ markerPosition: initialRegion })
},
(error) => alert(JSON.stringify(error)),
{ enableHighAccuracy: true, timeout: 2000, maximumAge: 3600000 }
)
}
我尝试过{ enableHighAccuracy: false, timeout: 2000 }
,但是它显示了相同的错误。
答案 0 :(得分:5)
根据您提供的代码,您并未显示您正在请求访问权限的授权。
开始请求位置之前,您应该打navigator.geolocation.requestAuthorization();
。
您还应该确保已在AndroidManifest.xml
和Info.plist
您可以在此处https://facebook.github.io/react-native/docs/geolocation
查看文档Android API> = 23需要额外的步骤来检查和 使用来请求ACCESS_FINE_LOCATION权限 PermissionsAndroid API。否则可能会导致严重的崩溃。
您可以执行以下操作。
import { PermissionsAndroid } from 'react-native';
async function requestLocationPermission() {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Location Permission',
'message': 'This App needs access to your location ' +
'so we can know where you are.'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use locations ")
} else {
console.log("Location permission denied")
}
} catch (err) {
console.warn(err)
}
}
答案 1 :(得分:1)
我也遇到了这个错误。我花了一点时间才发现设备定位方法需要在设备设置中保持“高精度”。
谢谢
答案 2 :(得分:1)
像这样设置高精度对我有用:
const location = await Location.getCurrentPositionAsync({
accuracy:Location.Accuracy.High
});
答案 3 :(得分:-1)
请打开您设备上的位置信息,然后再试一次。