緯度経度2点間の距離

ハーバーサイン公式で求めることができる

const EARTH_RADIUS = 6371000 ;   //----- 地球の半径(m)

//---------- ラジアン変換
function toRadians(degrees)
{
return degrees * (Math.PI / 180) ;
}

//---------- ハーバーサイン公式による2点間距離の算出
function calcDistance(srcLat, srcLng, dstLat, dstLng)
{
let srcLatRad = toRadians(srcLat);
let srcLngRad = toRadians(srcLng);
let dstLatRad = toRadians(dstLat);
let dstLngRad = toRadians(dstLng);

let diffLat = dstLatRad - srcLatRad;
let diffLng = dstLngRad - srcLngRad;

//---------- Haversine
let a = Math.sin(diffLat / 2) ** 2 + Math.cos(srcLatRad) * Math.cos(dstLatRad) * Math.sin(diffLng / 2) ** 2;
let c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

let distance = EARTH_RADIUS * c;

return distance ;
}

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール