ハーバーサイン公式で求めることができる
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 ;
}