📅  最后修改于: 2023-12-03 15:38:51.858000             🧑  作者: Mango
在开发中,我们经常需要计算两个地点之间的距离。但是,JavaScript 中没有内置的距离计算函数。幸运的是,我们可以使用经纬度来近似计算两个地点之间的距离。
纬度和经度是地球表面上点的坐标。
下面是用于计算两个地点之间距离的 Haversine 公式:
d = 2r * arcsin(sqrt((sin((lat2 - lat1) / 2))^2 + cos(lat1) * cos(lat2) * (sin((lon2 - lon1) / 2))^2))
其中:
d
为两个地点之间的距离(单位:公里)r
为地球半径lat1
和 lon1
为第一个地点的纬度和经度lat2
和 lon2
为第二个地点的纬度和经度我们可以在 JavaScript 中使用这个公式来计算两个地点之间的距离。以下是使用 Haversine 公式计算距离的 JavaScript 实现:
function getDistanceFromLatLonInKm(lat1, lon1, lat2, lon2) {
const earthRadius = 6371; // 地球半径(单位:公里)
const dLat = deg2rad(lat2 - lat1);
const dLon = deg2rad(lon2 - lon1);
const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) *
Math.sin(dLon / 2) * Math.sin(dLon / 2);
const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
const d = earthRadius * c;
return d.toFixed(2); // 保留两位小数
}
function deg2rad(deg) {
return deg * (Math.PI / 180);
}
调用 getDistanceFromLatLonInKm
函数,来计算两个地点之间的距离。
const distance = getDistanceFromLatLonInKm(31.22, 121.48, 30.67, 104.06);
console.log(distance); // 1912.44 km
使用纬度和经度近似计算两个地点之间的距离是一种简单而实用的方法,但是计算结果并不能完全准确反映真实的地理距离。