【发布时间】:2011-04-26 21:55:15
【问题描述】:
我有两个地方的纬度和经度。我可以在android中计算它们之间的距离吗?
【问题讨论】:
标签: android
我有两个地方的纬度和经度。我可以在android中计算它们之间的距离吗?
【问题讨论】:
标签: android
您正在寻找的是 hasrsine 公式,它使用它们的纬度和经度给出球体上两点之间的距离。
Haversine 公式:
R = 地球半径(平均半径 = 6371km)
Δlat = lat2 - lat1
Δlong = long2 − long1
a = sin²(Δlat/2) + cos(lat1)*cos(lat2)*sin²(Δlong/2)
c = 2*atan2(√a, √(1−a))
d = R*c
在 JavaScript 中:
var R = 6371; // km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
【讨论】:
这个 API 就是你想要的:
(注意:它是静态的...不需要 Location 对象实例)
【讨论】: