【发布时间】:2017-12-27 07:50:26
【问题描述】:
我正在使用Haversine 公式计算两个经纬度对的距离。
function getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
var R = 6371; // Radius of the earth in km
var dLat = deg2rad(lat2-lat1);
var dLon = deg2rad(lon2-lon1);
var lat1 = deg2rad(lat1);
var lat2 = deg2rad(lat2);
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;
return d;
}
给定一个起点(lat1,lat2),在直线上移动所需的距离和角度,我需要确定终点(如lat2和lon2)。
请参阅下面的尝试:
function getFinalLatLon(lat1, lon1, distance, angle) {
var R = 6371; // Radius of the earth in km
var c = distance/R;
// Math.atan2(Math.sqrt(a), Math.sqrt(1-a)) = c/2
var a = // stuck here
// looking for this part of the code
return [lat2, lon2];
}
【问题讨论】:
-
Math.atan2的倒数?你是说...Math.tan? -
不...它的 Math.atan2
-
所以你的意思是
Math.atan2的倒数是它本身?我不是想在这里搞笑,但你的问题陈述(和标题)有点令人困惑。 -
我只想要一个算法,在给定 [lat1, lat2] 和水平距离移动的情况下让我到达 [lat2, lon2]。这个有点像stackoverflow.com/questions/2187657/…
标签: javascript math geolocation haversine earthdistance