在React Native中计算距离

时间:2018-06-01 04:52:08

标签: reactjs react-native react-android

我希望从当前位置到目的地的距离。我的JSON文件中有目标的经度和纬度。如何获取当前位置的经度和纬度,以便计算两点之间的距离?我在我的android模拟器中尝试了下面的代码,但我一直在寻找时间问题。

    import React, { Component } from 'react';
import { View, Text } from 'react-native';

class GeolocationExample extends Component {
  constructor(props) {
    super(props);

    this.state = {
      latitude: null,
      longitude: null,
      error: 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 },
    );
  }

  render() {
    return (
      <View style={{ flexGrow: 1, alignItems: 'center', justifyContent: 'center' }}>
        <Text>Latitude: {this.state.latitude}</Text>
        <Text>Longitude: {this.state.longitude}</Text>
        {this.state.error ? <Text>Error: {this.state.error}</Text> : null}
      </View>
    );
  }
}

export default GeolocationExample;

我只是希望以英里的距离从当前位置到目的地。我怎样才能做到这一点?下面是屏幕以及我得到的错误enter image description here

2 个答案:

答案 0 :(得分:0)

今天我遇到了同样的问题,我发现的是,如果你在办公室内执行测试&#34; &#34;使用物理设备时,GPS定位器可能会受到墙壁等外部因素的干扰,或者仅仅是因为您尝试进行此操作而导致的。一般来说,这应该在户外执行。

我的建议是:尝试使用 enableHighAccuracy 设置为true进行地理定位,如果此操作因位置请求超时错误而失败(在办公室中可能会失败) ,使用false重试,这应该有效,就我而言。

希望这会对你有所帮助。

答案 1 :(得分:0)

添加另一个答案作为对问题的最佳解决方案。作为location timeout issue的一种解决方案,我正在使用react-native-geolocation-service,它的工作原理就像是一种魅力。

已创建此库,以解决react-native的当前实现Geolocation API在android上的位置超时问题。该库试图通过使用Google Play服务的新FusedLocationProviderClient API解决问题,Google强烈建议使用android的默认框架位置API。