32
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

緯度経度から2地点間の距離 (km) を計算する JavaScript

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回に集約。

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
32
Help us understand the problem. What are the problem?