我正在React-Native中使用Geolocation来接收我的当前位置,以在我周围加载对象。下面是我的代码。
getCurrentPosition() {
console.log("checkLocation", "getCurrentPosition1");
navigator.geolocation.getCurrentPosition(
position => {
const { coords } = position;
if (coords !== undefined) {
console.log("checkLocation", "getCurrentPosition trigger");
this.setState({
currentCoordinate: coords,
prevCoorForGet: coords,
prevCoorForUpdate: coords
});
this.props.saveCurrentLocation({
currentLocation: {
latitude: coords.latitude,
longitude: coords.longitude
}
});
this.loadContent(coords);
}
},
error =>
console.log(
"checkLocation",
"getCurrentPosition " + JSON.stringify(error)
),
{
enableHighAccuracy: true,
timeout: 60000,
maximumAge: 3600000
}
);
}
问题在于此代码在第一次运行时工作正常。但是,当我导航到另一个场景并返回时,它不再起作用,并给我超时错误。有时它起作用,有时却不起作用。请帮我修复它。
答案 0 :(得分:0)
即使在页面之间导航并返回地图屏幕后,此项目也能在我的项目中正常工作(ios和android)。
navigator.geolocation.getCurrentPosition(
(position) => {
// user location's latitude and longitude
let latitude = parseFloat(position.coords.latitude);
let longitude = parseFloat(position.coords.longitude);
console.log('location position: ', position);
let region = {
latitude: latitude,
longitude: longitude,
latitudeDelta: 0.0522,
longitudeDelta: 0.0321,
};
// to store region data
this.setState({region: region});
//animate to user current location
this.map.animateToRegion(region,1000)
},
(error) => console.log('position error!!!', error),
{enableHighAccuracy: false, timeout: 3000}
);
我希望它也适用于您的项目
修改
如果仍然无法运行
/**
* when return the page this listener will trigger
*/
this.props.navigation.addListener('willFocus', (payload) => {
// call location method again
this.getLocation()
});
答案 1 :(得分:0)
尝试下面的代码,这似乎对我有用
import Geolocation from 'react-native-geolocation-service';
componentWillUnmount() {
Geolocation.stopObserving();
}
答案 2 :(得分:0)
在componentWillMount()中使用您的函数,以便每次安装组件时都会执行该函数。