React Native Maps followUserLocation coordinates

时间:2017-01-23 09:15:43

标签: react-native geolocation react-native-android

大家好我需要一些关于如何在启用

时获取用户坐标的帮助
  

followUserLocation

on

  

MapView的

。有没有办法如何做到这一点,还是有任何可能的替代方案?

我已经做过类似的事了:

import {DeviceEventEmitter} from 'react-native';
import RNALocation from 'react-native-android-location';
import MapView from 'react-native-maps';

componentDidMount() {
    DeviceEventEmitter.addListener('updateLocation', function(e: Event) {
      console.log(e);
      this.setState({lng: e.Longitude, lat: e.Latitude });
    }.bind(this));
    RNALocation.getLocation();
 }

已使用React Native Geolocation https://facebook.github.io/react-native/docs/geolocation.html 但似乎没什么用。它只给我用户的初始位置,当用户位置发生变化时,它不会给我一些更新。

我甚至使用setInterval继续调用API,因此它可以为我提供有关用户位置的新更新,但坐标仍然没有更改。

我用假GPS移动我的位置或模拟我的位置。 。请多多帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用navigator.geolocation.watchPosition(https://developer.mozilla.org/en-US/docs/Web/API/Geolocation/watchPosition

const options = options = {
  enableHighAccuracy: false,
  timeout: 5000,
  maximumAge: 0
};
navigator.geolocation.watchPosition((lastPosition) => {
    this.setState({lng: lastPosition.coords.longitude, lat: lastPosition.coords.latitude });
}, (error) => {
  console.log('Error', error)
}, options);

答案 1 :(得分:0)

无论如何,我把它全部整理好了。由于我无法使用移动设备的GPS收听用户位置。我所做的是使用了React Native geolocation

中的代码
navigator.geolocation.getCurrentPosition(
  (position) => {
    var initialPosition = JSON.stringify(position);
    this.setState({initialPosition});
  },
  (error) => alert(JSON.stringify(error)),
  {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
);

每1秒循环一次,然后如果坐标发生变化则更新坐标状态(lat和long)。到目前为止它运作顺利。 :)