计算React Native中两个lat + lng坐标之间的距离?

时间:2017-04-21 08:11:18

标签: reactjs react-native

我有一个包含我公司设施的lat和lng的对象。我还有一个包含用户当前位置的lat和lng的对象。我想做的是使用站点的位置数据遍历对象,并计算最接近用户位置的对象。我想获得两者之间的公里数以及驱动距离所需的时间。

我一直在关注Google's Geometry API,但如果可能的话,无法弄清楚如何在React Native中使用它。

我的问题是我应该做些什么才能最好地实现这一目标?我可以以某种方式使用Google Geometry API吗?

编辑:我不必在应用中执行此操作,最好是我愿意这样做,但如果不可能,我可以简单地获取我的PHP API,如果有的话是一个更好的PHP解决方案。

3 个答案:

答案 0 :(得分:13)

npm包geolib https://github.com/manuelbieh/geolib有几种方法可以帮助你做到这一点; getDistance,findNearest和orderByDistance。

答案 1 :(得分:0)

您可以使用d =√((y2-y1)^ 2 +(x2-x1)^ 2)找到从一个点到另一个点的距离。在遍历集合并跟踪最小值时,只为每个人执行此操作。我不明白为什么距离公式对于纬度和长度有任何不同,但我无法肯定地说。

答案 2 :(得分:0)

尝试此更新的工作代码!

import {getDistance} from 'geolib';
import * as Location from "expo-location";
import * as Permissions from "expo-permissions";

export default class Locations extends Component
{
    state = {  
        destinationLat: 31.6200,
        destinationLong: 74.8765,
        distance:null,
        startLat:52.528308,
        startLong:1.3817765
    };
    async componentDidMount(){
        let location = await Location.getCurrentPositionAsync({
            enableHighAccuracy: true,
        });
        this.setState({
            startLat: location.coords.latitude,
            startLong: location.coords.longitude,
          });
        var dis = getDistance(
            {latitude: location.coords.latitude, longitude: location.coords.longitude},
            {latitude: this.state.destinationLat, longitude: this.state.destinationLong},
          );
          this.setState({
            distance: dis/1000,
          });
    };
    render(){
        return(
            <Text>{this.state.distance} KMs</Text>
        );
    }
}