スマホやタブレットの普及で、現在地を取得するような位置サービスの需要が多くなるのは用意に想像がつく。
そこで、WebブラウザでJavaScriptを使って現在地の位置情報を取得する方法の備忘録。
HTML5 APIのひとつ、Geolocation API。これを使って現在地の位置情報を取得することができるようになる。
本家の仕様(Geolocation API Specification)を自分なりに翻訳していきます。
まず、現在地を取得するには、
「一回のみ取得(getCurrentPosition)」か「ずっと取得し続ける(watchPosition)」か。
の2種類ある。
そして「ずっと取得し続ける場合、それを「解除する(clearWatch)」手段。
セットできる引数は3つ。
引数の扱いは「一回のみ取得(getCurrentPosition)」と同様。
| 取得時間 | position.timestamp |
|---|---|
| 緯度 | position.coords.latitude |
| 緯度 | position.coords.longitude |
| 高度 | position.coords.altitude |
| 緯度・経度の誤差 | position.coords.accuracy |
| 高度の誤差 | position.coords.altitudeAccuracy |
| 方角 | position.coords.heading |
| 速度 | position.coords.speed |
| 1 | PERMISSION_DENIED | position.timestamp |
|---|---|---|
| 2 | POSITION_UNAVAILABLE | position.coords.latitude |
| 3 | TIMEOUT | position.coords.longitude |
error.messageで、エラーメッセージを取得できる(英文)。
| enableHighAccuracy | 精度重視はtrueをセット。ただしバッテリーの減りはfalseより早い。 |
|---|---|
| timeout | 一回の取得時間(ミリ秒で指定) |
| maximumAge | キャッシュ(ミリ秒で指定) |
/* デフォルト(指定なしの場合) */
{
enableHighAccuracy: false,
timeout: Infinity,
maximumAge: 0
}
/* キャッシュ:10分間以内に取得した情報があればそれを採用する。なければ新規取得。 */
{
maximumAge: 600000
}
/* 10分間以内に取得した情報があればそれを採用する。なければエラー。 */
{
maximumAge: 600000,
timeout: 0
}
/* 取得した情報があればそれを採用する。なければエラー。 */
{
maximumAge: Infinity,
timeout: 0
}
基本は理解できたのだが、利用シーンによって、バッテリーの消費を抑えつつ、できるだけ正確な位置情報を取得できる手段はいろいろ検証の余地がありそう。
さらにはエラーのハンドリングをうまくしないと想定外の動きをしてしまう。。
まだ自分なりのベストが見つからず模索中!
奥が深いぜッ!
この書籍の中で、ライティングのユーザビリティについて触れている項目があり、激しく共感する部分だったので、ここで備忘録としてピックアップする。 ・・・
この書籍は、I部 リサーチ、II部 デザイン、III部 インプリメンテーションと三部構成になっている。この記事では、その中から、I部 リサーチ、・・・
これを知ったときはマジか!と飛び跳ねた。あらためて思い返してみると、確かに公式チュートリアルでも触れていたことをうっすら思い出す。そしてそのときとやり方がなん・・・
試したことはまだないけど、Macで編集時と書き出し後で色味が変わって困ったときのために備忘録。 プロジェクト設定 > 「カラーマネジメント・・・
プロジェクト設定と環境設定について詳しく解説されている情報がなかなか見つからないので、要所要所で知り得た情報を更新していきます。 プロジェクト設定 ・・・
Clipyが超絶便利そうだったので、macOS Big Sur にインストール&再起動して使ってみた。ところが、command + c を複数の箇所で行い、c・・・
requestAnimationFrame をはじめて見たので調べていたら、setTimeout や setInterval は requestAnimati・・・
6年ぶりに読み返したが、今なおハッとさせられることが多く見つかる。 この本で忘れないようにしたい項目をピックアップするだけでも役に立ちそ・・・
この記事では、以前に読んだ際に付箋を付けていたが、その部分だけを備忘録としてピックアップするため、本の要約ではない。実際は、何倍も濃い内容で、練・・・
もう一回、全部読み返したいところだが、書籍がありすぎるので、当時付箋紙をつけていたところだけをピックアップ。書籍内ではより具体的な説明があるので・・・
これまでに扱ったことのないようなものを取り扱うときには、次のような問いを参考にすると何をしたらよいかが分かってくる。 どの部分が可動部で、どの部分が固定部か。・・・
以前に書いた「このサイトのリニューアル」で、リニューアル意思を示しつつも結局保留にして、先送りしてしまっていたけど、このあいだの週末(2013.3.29-30)・・・
エラーが起こっても大丈夫なシステムを作ると、みんなそれに頼るようになるので、信頼性を高くしておいたほうがよいだろう。 エラーの原因を理解し、その原因が最も少な・・・
こんな製品は使いたくない例1 教示がよくない。 システムの操作が可視的でない。 操作した結果が目に見えない。 こんな製品は使いたくない例2 デザイナーは良か・・・
いつもは直接アップロードしているので気にしていなかったが、WordPress管理画面のメニュー「メディア」からfavicon.icoをアップロードしようとした・・・
「デザインノート EXTRA good design company 水野学」から抜粋して自分なりの解釈を追加した過去メモ。 「iD」メイキング ・・・
新規コンテンツ「たびのと言ノ葉」公開 Webマガジン「たびのと」を夏に公開しましたが、たびのとのコンテンツの一つとして「たびのと言ノ葉(ことのば)」を新規で作・・・
外界の中の知識 人は環境を構造化して、思い出さなくてはならないものに関する多量の情報を手に入れることができるようにしている。 そのために、「ofの知識(事実につ・・・
もはや他ブラウザでも問題ないようにクロスブラザ対応だけでなく、スマートフォンやタブレット端末などマルチデバイスに対応できるようになっておかなければ、という時代に・・・
いろいろ調べると、疑似クラス「:placeholder」と「:placeholder-shown」というのにいきつく。 ちょっとハマってしまったので備忘録。ハマ・・・
「test」
「>ころころさん コメントありがとうございます! 確かに、APIドキュメント見ましたが、ライブに関する情報は今のところ取得できないようですね。 インスタライ・・・」
「SIGMAから超軽量で明るい単焦点レンズが2本発売になりましたので、リストにレンズ情報追加しました!」
「>名無しさん ご指摘、ありがとうございます! 記事冒頭の「まずはサンプル」のサンプルが動いていませんでしたので修正しました。」
「>前田さん コメントありがとうございます。 環境は分かりかねますが、修正したいファイルのパーミッションを604や644に変更すると書き込みできるようになります(・・・」
「アバターを取得する「get_avatar」についても追記しました!」
「「値をクリアする」を追加しました。チェックボックスやラジオボタンの値を何も選択していない状態に戻すときについて触れています。」
「>匿名さん コメントありがとうございます。 サンプルでは、beforeは何も処理していないので期待する表示にならない、で正解です。 クリックした後が、対応・・・」
「(匿名)さん コメントありがとうございます。何も設定変更していないのに、それまで使用できていたサーバーが突然使えなくなるのは辛いですよね、、。 ここで紹介したや・・・」
「コメントありがとうございます! そもそもできるかはわかりませんが、ソースを書き換える必要はあります。 下記記事などが参考になるかもしれません。 illustra・・・」
WEB制作マークアップJavaScriptGeolocation API | シンプルシンプルデザイン