React Native Android GeoLocation

时间:2016-05-05 15:33:57

标签: android geolocation react-native

我正在尝试在Android React Native应用程序中获取用户的位置。我开始关注React Native Geolocation Tutorial,但没有运气。

我已向Android项目添加了相应的权限,并将此代码插入react native app:

  componentDidMount() {

    navigator.geolocation.getCurrentPosition(
      (position) => {
        var initialPosition = JSON.stringify(position);
        this.setState({initialPosition});
      },
      (error) => alert(error.message),
      {enableHighAccuracy: true, timeout: 20000, maximumAge: 1000}
    );
    console.log("Initial position: " + this.state.initialPosition)

  }

我也将initialPosition变量定义为'unknown',就像在教程中一样。示例运行时,initialPosition变量打印未知。然后大约5秒钟后,警报显示“未定义”错误。

我对发生的事情感到有点困惑,因为错误是空的。也许我错误地实例化了“地理定位”?不幸的是,我无法通过搜索找到关于此的更多信息,所以任何帮助都表示赞赏。

2 个答案:

答案 0 :(得分:2)

希望这有点帮助:

  1. 您正在回调之外记录initialPosition。这意味着initialPosition将是未知的,因为回调尚未运行,因此initialPosition变量尚未更新。
  2. 尝试记录error变量,而不仅仅是警告error.message。可能存在error,但不是error.message

答案 1 :(得分:0)

  
      
  1. 尝试此代码它可能会帮助您将this.state中的构造函数中的纬度和经度变量定义为null。
  2.   
  3. 如果你想打印json字符串然后在状态中定义一个数组然后通过设置this.setState数组来使用
  4.   
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

- componentDidMount(){ navigator.geolocation.getCurrentPosition( (position)=>{ //const ipos = JSON.stringify(Position); this.setState({ latitude: position.coords.latitude, longitude: position.coords.longitude, }); }, { enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 } ); }

{{1}}