Japonyol » ブログ » タイムスタンプと進行方向について補足

タイムスタンプと進行方向について補足

公開日: 2024年5月9日

timestamp

現在地を取得し移動の軌跡をトレースするマップ」について補足。
緯度、経度、タイムスタンプを収納した CSV ファイルを出力できるようにしているが、タイムスタンプとは1970年1月1日午前0時0分0秒 (UTC: Coordinated Universal Time) からの経過秒数 (ミリ秒) を指す。

timestamp:

Geolocation API で得られるこの値を javascript で可読化すると次のようになる。

toLocaleString() 変換:

基本的なメソッドはすべてタイムゾーンとオフセットで動作する (日本国内でアクセスすれば UTC + 9 の日本時間で出ているはず)。

heading

さらに API で得られる heading は進行方向を度数で示すので、その値に合わせアイコンを回転させている。次のロジック

heading:

なお API が返す altitude とは WGS84 楕円からの高度でジオイド高を含むので、標高とは異なる。誤解を招きかねないので表示しないようにした。Latitude と Longitude さえ取れたら充分だろう。
また CSV のログは1分間でおよそ50行、2 KB 近くになるので、長時間にわたり継続使用するとそれなりに重くなる。
動かないPCや、ごく短距離の移動の場合は CSV を出力しない。

覚え書き、当方の環境では Blob のケースで

new Blob (array, {type: 'text/csv', endings: 'native'})

改行の解釈方法についてオプションで endings: 'native' を記載しないとおかしくなる。たかが \n されど \n
分からないことがあれば stackoverflow で調べるとたいてい解決する。

久しぶりに麻雀やりたくなったなぁ