我有一个使用位置服务的应用程序,但是当我请求当前位置并且在用户允许的权限后,应用程序找不到位置。 用户必须先关闭然后重新打开该应用程序才能找到正确的位置,然后用户才能找到它的位置。 这是我的代码:
componentWillMount() {
this.getCurrentLocation();
}
getCurrentLocation = () => {
const locationConfig = {
timeout: 20000,
maximumAge: 1000,
enableHighAccuracy: false
};
navigator.geolocation.getCurrentPosition(
this.iGetLocation,
(error) => {
console.log(error);
},
locationConfig
);
};
答案 0 :(得分:2)
我认为问题出在您的职位回调中:this.iGetPosition
。尝试使用回调函数,如下所示。
这对我有用(请检查getCurrentPosition
函数):
componentDidMount() {
this.requestAccess();
}
requestAccess = async () => {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Location permission',
'message': 'App needs access to your location ' +
'so we can show your location.'
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
navigator.geolocation.getCurrentPosition(
(position) => {
this.setState({
latitude: position.coords.latitude,
longitude: position.coords.longitude,
error: null,
});
},
(error) => this.setState({ error: error.message }),
{ enableHighAccuracy: false, timeout: 20000, maximumAge: 1000 },
);
} else {
console.log("Location permission denied")
}
} catch (err) {
console.warn(err)
}
}