🐥

緯度経度で距離を測る方法 (Vue, Nuxt, TypeScript)

2024/04/23に公開

経緯

今日ではGoogleMapのAPIを利用すれば、距離やルート検索など様々できます。

ただ、上記のAPIは従量課金で有料です。
なので今回は無料で出来ることでまず距離を測ろうと思い立ちました。

工夫をしてどこまでできるのかチャレンジしているのが今回の目的です。
下記はGoogleMapの二点間のルート表示をURLの埋め込みのみで表示したものです。
https://zenn.dev/rionishino/articles/30b750f250c71f

時間を計測したいなと思いまず距離を取得しようとしたのが今回の記事です。

二点の距離を測る

二点の距離を測るのは下記で行います。
https://geographiclib.sourceforge.io/JavaScript/doc/index.html

プロジェクトにインストールして使えばすぐに使えます。

npm install geographiclib-geodesic geographiclib-dms

2つの地点間の距離を計算します。具体的には、地点(-41.32, 174.81)と地点(40.96, -5.50)の間の距離をメートル単位で計算し、その結果を表示しています。

<script setup lang="ts">

import { Geodesic } from 'geographiclib-geodesic'

const geod = Geodesic.WGS84
var r = null

 r = geod.Inverse(-41.32, 174.81, 40.96, -5.50) // ←ここで二点間の緯度経度を代入
console.log("The distance is " + r.s12!.toFixed(3) + " m.");
</script>

上記で記載しているのが二点間の距離で、URL先にもう一つ記載あるのが下記です。
ある地点から特定の距離と方向に移動したときの新しい地点を計算します。具体的には、パース、オーストラリア(-32.06, 115.74)から南西方向(225度)に20000 km移動した地点の緯度と経度を計算し、その結果を表示します。

r = geod.Direct(-32.06, 115.74, 225, 20000e3);
console.log("The position is (" +
            r.lat2.toFixed(8) + ", " + r.lon2.toFixed(8) + ").");
// This prints "The position is (32.11195529, -63.95925278)."

Google Mapってやっぱりすごい

無料で便利なことをやっているGoogleMapはやっぱりすごいということですね。

Discussion