在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之间的距离[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在javascript中计算两个日期时间之间的持续时间

Geolocation API JavaScript访问用户的当前位置信息

使用javascript计算两个邮政编码之间的距离

JavaScript 计算两个日期之间的营业日

如何在Javascript中找到两个日期之间的给定天数? [复制]

javascript 计算两个值(最小值,最大值)和值之间的百分比