ReactNativeで2地点の緯度経度から間の距離を計算するコード例

アプリ実装時に、地点情報を使うアプリ設計をする場合には、
現在地から目標地点までの距離を計算する事は多くあるのではないかと思います。

地点間の距離を出すためにライブラリを活用する方法もありますが、
今回は自力で2地点の間の距離を計算して算出する方法を紹介しようと思います。

expoを用いて動作確認していますので、ReactNative 上でも問題なく動作するかと思います。

目次(クリックで読みたい部分にジャンプできます)

コード

2地点の緯度経度から間の距離を計算するには、ヒュベニの公式を用います。
(参考:Vincenty法 - Wikipedia

//適当な地点情報を入れる。
const point1 = { latitude:35.89189813203365 , longitude: 139.85816944009074 }; 
const point2 = { latitude:35.89189813203356 , longitude: 139.85816944009025 };

const distanceInMeters = haversineDistance(point1.latitude,point1.longitude,point2.latitude,point2.longitude);
console.log(distanceInMeters) 

// ヒュベニの公式を使用して2つの座標間の距離を計算
function haversineDistance(lat1, lon1, lat2, lon2) {
    const R = 6371; // 地球の半径(単位: km)

    const dLat = toRadians(lat2 - lat1);
    const dLon = toRadians(lon2 - lon1);

    const a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
          Math.cos(toRadians(lat1)) * Math.cos(toRadians(lat2)) *
          Math.sin(dLon / 2) * Math.sin(dLon / 2);
    const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));

    return R * c;
}

// 2つの座標の緯度と経度をラジアンに変換するヘルパー関数
function toRadians(degrees) {
    return degrees * (Math.PI / 180);
}

なぜこのような式になるかは自分もわかりません!笑

とりあえず、2地点の緯度と経度をぶち込むと距離が算出されるものと思っていただいて、使えれば問題ないと思います。

算出される時の単位は、kmです。

あべべ

モジュールに依存しないので、モジュールの影響を受けないのが良いですね!

まとめ

今回は、ReactNativeで2地点の距離を計算する方法について解説しました。

ReactNativeでは現在地を取得することができるAPIも提供しているので、そちらを活用して目的の場所との距離を計測できるでしょう!

では。また!

(Visited 6 times, 1 visits today)