在JavaScript中计算两个geolocs之间的距离[重复]
Posted
技术标签:
【中文标题】在JavaScript中计算两个geolocs之间的距离[重复]【英文标题】:Calculate distance between two geolocs in JavaScript [duplicate] 【发布时间】:2013-01-23 17:07:38 【问题描述】:可能重复:How do I calculate distance between two latitude-longitude points?
如何计算 javascript 中地理位置之间的距离(以米为单位)?我找到了这个answer,但它是用 Java 实现的,我不太明白发生了什么。
我正在使用 html 5 的地理位置功能并使用 JavaScript 来计算距离。到现在为止我有这个功能:
function calculateDistance(lat1, lat2, lng1, lng2)
return Math.sqrt(((lat1 + lat2)*(lat1 + lat2)) + ((lng1 + lng2)*(lng1 + lng2)));
显然这不是我需要的值。有人可以帮帮我吗?
【问题讨论】:
您必须将其视为球面几何问题。也就是说,你必须找到的是球体表面上的弧长(这也不是真的正确,但它更接近)。 更多谷歌搜索会显示这个question has been asked before。解决方案甚至在 JavaScript 中! @thanks voithos,投票决定关闭这个。 【参考方案1】:var R = 6371; // Earth radius in km
var dLat = (lat2-lat1).toRad();
var dLon = (lon2-lon1).toRad();
var lat1 = lat1.toRad();
var lat2 = lat2.toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = R * c;
这不是我的代码。取自:http://www.movable-type.co.uk/scripts/latlong.html 详情请查看链接。
【讨论】:
【参考方案2】:也许this 会有所帮助,而这个answer 也会有所帮助。
【讨论】:
以上是关于在JavaScript中计算两个geolocs之间的距离[重复]的主要内容,如果未能解决你的问题,请参考以下文章
Geolocation API JavaScript访问用户的当前位置信息