🐷

2点間の緯度経度と速さから時間を割り出し (Vue, Nuxt, TypeScript)

2024/04/23に公開

時間を求める。

GoogleMapのAPIを利用せずに二点間の距離やMapの埋め込み等をおこなってきました。
次に、二点間の距離がでたので目的地までの時間を計算していければと思います。

以下関連記事

https://zenn.dev/rionishino/articles/30b750f250c71f

https://zenn.dev/rionishino/articles/48e6e2c26348c0

コード

<script setup lang="ts">
import { Geodesic } from 'geographiclib-geodesic'

const geod = Geodesic.WGS84
var r = null

// 東京駅緯度
const tokyoLa = 35.6812405
// 東京駅経度
const tokyoLo = 139.7645499
// スカイツリー緯度
const skyTreeLa = 35.710067
// スカイツリー経度
const skyTreeLo = 139.8081255
// 距離計算
r = geod.Inverse(tokyoLa, tokyoLo, skyTreeLa, skyTreeLo)
console.log("The distance is " + r.s12!.toFixed(3) + " m.")

// 距離 (メートル)
var distance = parseInt(r.s12!.toFixed(3))
// 速度 (時速40kmを秒速に変換)
var speed = 40 * 1000 / 3600
// 時間 (秒) = 距離 (メートル) / 速度 (メートル/秒)
var time = distance / speed
// 時間を分に変換
var timeInMinutes = time / 60
// 時間表示
console.log("目的地までの時間は約 " + timeInMinutes.toFixed(2) + " 分です。")
</script>

※補足

var speed = 40 * 1000 / 3600

時速40kmを 1kmの1000mでかけてます。
3600は一時間が3600秒であるので速度を3600で割る必要があります。

時間が正確ではない。

時間は直線距離に対しての計算方法でGoogleMapの様に渋滞情報などを考慮しきれないのが難点。

だいたいの目安として記載するぶんにはいいのかもしれません。
時速を遅くしたりすればいいのかなともおもいつつ。

以上

Discussion