检查我的数学计算以英里为单位的 2 点之间的距离
Checking my math for distance between 2 points in miles
你好,我正在尝试做一个计算器来计算两点之间的距离。一切正常。我只是想确保我的数学计算正确。我给你2个坐标插上,告诉我对不对。谢谢
测试坐标:
lat1: 27.95094
lng1: -82.45404
lat2: 27.9659
lng2: -82.8001
测试结果:
21.13 英里
我只是想检查我从 1 点到下一点的计算是否正确,或者我的数学是否不正确。谢谢
function distance(lat1, lng1, lat2, lng2, unit) {
var radlat1 = Math.PI * lat1/180;
var radlat2 = Math.PI * lat2/180;
var theta = lng1-lng2;
var radtheta = Math.PI * theta/180;
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
if (dist > 1) {
dist = 1;
}
dist = Math.acos(dist);
dist = dist * 180/Math.PI;
dist = dist * 60 * 1.1515;
if (unit=='miles') { dist = (dist * 0.8684) * 1.15077945 }
return dist;
}
travel = distance(lat1, lng1, results.features[0].center[1], results.features[0].center[0], 'miles');
travel = parseInt(travel * 100)/100;
是的,您似乎正确地实现了 Haversine 公式(https://en.wikipedia.org/wiki/Haversine_formula)
你好,我正在尝试做一个计算器来计算两点之间的距离。一切正常。我只是想确保我的数学计算正确。我给你2个坐标插上,告诉我对不对。谢谢
测试坐标: lat1: 27.95094 lng1: -82.45404
lat2: 27.9659 lng2: -82.8001
测试结果:
21.13 英里
我只是想检查我从 1 点到下一点的计算是否正确,或者我的数学是否不正确。谢谢
function distance(lat1, lng1, lat2, lng2, unit) {
var radlat1 = Math.PI * lat1/180;
var radlat2 = Math.PI * lat2/180;
var theta = lng1-lng2;
var radtheta = Math.PI * theta/180;
var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
if (dist > 1) {
dist = 1;
}
dist = Math.acos(dist);
dist = dist * 180/Math.PI;
dist = dist * 60 * 1.1515;
if (unit=='miles') { dist = (dist * 0.8684) * 1.15077945 }
return dist;
}
travel = distance(lat1, lng1, results.features[0].center[1], results.features[0].center[0], 'miles');
travel = parseInt(travel * 100)/100;
是的,您似乎正确地实现了 Haversine 公式(https://en.wikipedia.org/wiki/Haversine_formula)