如何使用(React native,Geolocation)实时获取纬度和经度

时间:2019-03-12 06:02:10

标签: google-maps react-native

在这种情况下我是新手,希望有人可以帮助我

  

我在实际获得纬度和经度方面有问题   时间,当我移动到某个地方时,纬度和经度的结果仍然相同。

我向您展示我已经编写的代码。

          constructor(props) {
        super(props);
        this.state = {
          latitude: null,
          longitude: null,
          error: null,
          lastPosition: null
        };
      }



    componentDidMount() {
        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 },


        );

        this.watchID = navigator.geolocation.watchPosition((position) => {
          const lastPosition = JSON.stringify(position);
          this.setState({ lastPosition });
       });

      }

  componentWillUnmount() {

    window.navigator.geolocation.clearWatch(this.watchId)

  }

  render() {
    return (
      <View style={styles.container}>
          <Text>Latitude: {this.state.latitude}</Text>
          <Text>Longitude: {this.state.longitude}</Text>

          <Text>lastPosition: {this.state.lastPosition}</Text>
          {this.state.error ? <Text>Error: {this.state.error}</Text> : null}
      </View>
    );
  }

1 个答案:

答案 0 :(得分:0)

watchPosition()

的真实用法

https://facebook.github.io/react-native/docs/geolocation#watchposition

默认情况下,distanceFilter设置为100米。可以将其设置为1米,这样您就可以捕捉到任何位置变化。

尝试一下

this.watchID = navigator.geolocation.watchPosition((lastPosition) => {
        const lastPosition = JSON.stringify(position);
        console.log(lastPosition);
        this.setState({ lastPosition });
    }
},
(error) => console.log(error)),
{enableHighAccuracy: true, timeout: 10000, maximumAge: 0, distanceFilter: 1});