JavaScript:中心地点から指定された距離分離れた経度緯度を取得する関数

JavaScript:中心地点から指定された距離分離れた経度緯度を取得する関数

November 5, 2021

かつて自分が使うために作ったものですが、もし誰かの役にたてばと公開しておきます。

説明 #

経度緯度で指定された中心地点 A から、引数で指定された距離(x)km を離れた北緯(n)、南緯(s)、東経(e)、西経(w)を返します。

┌──────── n ────────┐
│                   │
│                   │
│                   │
w         A <- x -> e
│                   │
│                   │
│                   │
└──────── s ────────┘

関数(TypeScript / JavaScript) #

TypeScript で記載しています。型定義があるのは引数部分のみですので、JavaScript として使いたい場合は引数部分の型を削除してください。

/**
 * 中心地点から指定された距離分離れた北緯、南緯、東経、西経を取得する。
 * @param lat - 中心地点の緯度
 * @param lng - 中心地点の経度
 * @param distance - 中心地点からの距離(km)
 */
const getDistancedLatLng = (lat: number, lng: number, distance: number) => {
  const R = Math.PI / 180; // 円周率をラジアンRに変換
  const earthRadius = 6371; // 地球の半径(6,371km)
  const kilometerPerDegree = R * earthRadius; // 1度あたりの距離(km) = 約111km
  const degreePerKilometer = 1 / kilometerPerDegree; // 1kmあたりの角度 = 約0.0089度
  const diff = distance * degreePerKilometer; // 指定された距離を角度に変換したもの
  return { n: lat + diff, e: lng + diff, s: lat - diff, w: lng - diff };
};

実行結果

東京タワー(緯度:35.65858404079、経度:139.7454316446)から 10km 離れた地点の経度緯度を取得。

const result = getDistancedLatLng(35.65858404079, 139.74543164468, 10);

/**
 * {
 *   "n": 35.74851620138187,
 *   "e": 139.83536380527187,
 *   "s": 35.568651880198125,
 *   "w": 139.65549948408812
 * }
 */