即使在移动大约370米后,React Native watchPosition也不会更新(android)

时间:2017-03-27 14:27:57

标签: android react-native geolocation

我目前正在尝试让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>
    );
}
}

0 个答案:

没有答案