我有一个包含我公司设施的lat和lng的对象。我还有一个包含用户当前位置的lat和lng的对象。我想做的是使用站点的位置数据遍历对象,并计算最接近用户位置的对象。我想获得两者之间的公里数以及驱动距离所需的时间。
我一直在关注Google's Geometry API,但如果可能的话,无法弄清楚如何在React Native中使用它。
我的问题是我应该做些什么才能最好地实现这一目标?我可以以某种方式使用Google Geometry API吗?
编辑:我不必在应用中执行此操作,最好是我愿意这样做,但如果不可能,我可以简单地获取我的PHP API,如果有的话是一个更好的PHP解决方案。
答案 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>
);
}
}