在nextjs中计算以英里为单位的两点之间的距离

问题描述

我有两点例子

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代表千米。