2地点の緯度経度を指定して距離を km で返す JavaScript 関数
参照 → https://qiita.com/naotarou/items/628952e68fef059c6b1a
const R = Math.PI / 180;
function distance(lat1, lng1, lat2, lng2) {
lat1 *= R;
lng1 *= R;
lat2 *= R;
lng2 *= R;
return 6371 * Math.acos(Math.cos(lat1) * Math.cos(lat2) * Math.cos(lng2 - lng1) + Math.sin(lat1) * Math.sin(lat2));
}
地球を(回転楕円体でなく)直径 半径 6,371km の球体としたときの計算らしい。
Google Maps も同じ計算らしい。
試してみる:
distance(35.666863,139.74954,35.663729,139.744047); // => 0.6063721931946154
distance(43.064313,141.347255,35.663729,139.744047); // => 834.321307653742
https://gist.github.com/kawanet/15c5a260ca3b98bd080bb87cdae57230 にも置いておいた。
2021/05/26 更新 直径→半径でした💦 Math.PI / 180
の除算定数を1回に集約。