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
* }
*/