根据您的 cmets,我假设您需要计算小于 50 英里的短距离,
最简单的不太准确的方法是坐标点距离公式,`aka,毕达哥拉斯距离公式
其中 a,b 显然是纬度、经度对。现在纬度 1 度 = 68~69 英里或 111 公里。请记住,这只是一个近似值。
只需将等式的结果乘以纬度英里即可。这在短距离时提供了一个相当粗略的过滤器,当我需要进行许多计算时,我使用它来按距离过滤,考虑到我的使用谷歌 api 显示结果可能相当昂贵(时间、带宽、配额)应用程序每次搜索需要过滤大约 100 个结果。另外我建议添加 20~30% 的变化以包括实际道路距离。
好的。如果您仍在阅读本文,那么您需要更准确的结果。
那就用这个吧,记得把这段代码转成python格式。我只是和我一起使用了 javascript 代码。
function getDistanceLatLong(lat1,Long1,lat2,Long2) {
var RK = 6371; // Radius of the earth in km
var RM = 3959;
var dLat = deg2rad(lat2-lat1); // deg2rad below
var dLong = deg2rad(Long2-Long1);
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLong/2) * Math.sin(dLong/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = RK * c; // Distance in kiloMeters choose this or
var d = RM * c; // Distance in Miles
return d;
}
function deg2rad(deg) {
return deg * (Math.PI/180)
}