【发布时间】:2014-08-20 19:23:23
【问题描述】:
我正在研究了解特定坐标周围坐标的最佳方法。 我是说: 如果在坐标中:
@29.817178,-95.4012915
我如何知道坐标:@30.00121, -93.13213 是否距离我的实际位置 50 公里(或更少)?
【问题讨论】:
-
您需要提及的是,物品仅位于球形表面上。
标签: math coordinates coordinate-systems
我正在研究了解特定坐标周围坐标的最佳方法。 我是说: 如果在坐标中:
@29.817178,-95.4012915
我如何知道坐标:@30.00121, -93.13213 是否距离我的实际位置 50 公里(或更少)?
【问题讨论】:
标签: math coordinates coordinate-systems
你应该使用Haversine formula,一个很好的解释可以在here和一个javascript示例中找到。
【讨论】:
var R = 6371; // km var φ1 = lat1.toRadians(); var φ2 = lat2.toRadians(); var Δφ = (lat2-lat1).toRadians(); var Δλ = (lon2-lon1).toRadians(); var a = Math.sin(Δφ/2) * Math.sin(Δφ/2) + Math.cos(φ1) * Math.cos(φ2) * Math.sin(Δλ/2) * Math.sin(Δλ/2); var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); var d = R * c;谢谢!
由于您正在处理纬度和经度,因此您需要计算两点之间的great circle distance。
公式有点详细,所以我不会在这里复制它,但在上面链接的维基百科文章中有解释。
【讨论】: