问题描述
我有两点例子
point1 = {lat: 40.6974034,lng: -74.1197636}
point2 = {lat: 42.694034,lng: -75.117636}
我想在NextJs中以英里为单位计算这两个点之间的距离。 谁能给我建议我可以使用的任何包装?
解决方法
const point1 = {
lat: 40.6974034,lng: -74.1197636
};
const point2 = {
lat: 42.694034,lng: -75.117636
};
const getDistance = (lat1,lon1,lat2,lon2,unit) => {
if ((lat1 === lat2) && (lon1 === lon2)) {
return 0;
}
const radlat1 = Math.PI * lat1 / 180;
const radlat2 = Math.PI * lat2 / 180;
const theta = lon1-lon2;
const radtheta = Math.PI * theta / 180;
let 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 === "K") { dist = dist * 1.609344 };
if (unit === "N") { dist = dist * 0.8684 };
return dist;
};
console.log('Miles',getDistance(point1.lat,point1.lng,point2.lat,point2.lng,'M'));
console.log('Kilometers','K'));
console.log('Nautical miles','N'));
我想您可以使用此功能,也可以传递不同的单位,N代表海里,M代表英里,K代表千米。