我目前正在尝试让Android应用确定我的位置,然后每隔10秒将纬度和经度上传到firebase。目前上传似乎很好,但navigator.geolocation.watchPosition即使在移动370米后似乎也没有更新,即使它应该每10米更新一次。
我已经尝试通过改变纬度和经度在模拟器中进行测试,并且在现实生活中通过骑自行车370米进行测试。
哦,是的,我已经在Android清单中包含了FINE位置的权限。我也尝试过测试以确定地理定位是否有效,如果我在伦敦然后在牛津进行模仿,它似乎会更新。因此,在检测位置的大规模变化时没有问题,但如果位置差异仅为370米,则说没有问题,比如说是另一条路的一端。
真的很感激任何帮助!提前谢谢!
import React, {
Component,
} from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
ScrollView
} from 'react-native';
let myDatas={
timestamp:[],
longitude:[],
latitude:[],
};
export default class GeoLocation extends Component {
constructor() {
super();
this.state = {
latitude: null,
longitude: null,
timestamp: null,
error: null,
};
}
componentDidMount() {
var watchPositionID;
watchPositionID = navigator.geolocation.watchPosition(
(position) => {
let now = new Date()
myDatas.longitude.push(position.coords.longitude);
myDatas.latitude.push(position.coords.latitude);
myDatas.timestamp.push(now);
this.setState({
latitude: position.coords.latitude,
longitude: position.coords.longitude,
timestamp: now,
error: null,
});
},
(error) => this.setState({error:error.message}),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 0, distanceFilter: 10},
);
this.uploadTimer=setInterval(
()=>{
uploadData(myDatas);
myDatas={
timestamp:[],
longitude:[],
latitude:[],
};
},10000
)
}
componentWillUnmount() {
navigator.geolocation.clearWatch(watchPositionID);
this.uploadTimer && clearInterval(this.uploadTimer);
this.timerpos && clearInterval(this.timerpos);
}
render() {
return (
<View>
<Text>Latitude: {this.state.latitude}</Text>
<Text>Longitude: {this.state.longitude}</Text>
</View>
);
}
}