連載 :
HTML5の便利なTips100選スマホアプリ開発にも便利な位置情報API - Geolocation API -
2012年5月18日(金)
TIPS 002:位置取得に失敗した場合の処理を定義する
getCurrentPositionメソッドの第2引数に「失敗コールバック関数」を指定しておくことで、位置情報の取得に失敗した場合に、エラーメッセージの表示などのエラー処理を行えます。
失敗コールバック関数は省略可能ですが、位置取得はネットワーク接続の理由をはじめ、さまざまな原因で失敗することがあります。位置取得できなかった場合にそのままにするのではなく、ユーザーに通知できるようなしくみを設けておくのが望ましいでしょう。
[リスト]位置取得に失敗した場合にメッセージ表示するコード(current.html)
// 現在の位置情報を取得 navigator.geolocation.getCurrentPosition( // 位置情報の取得に成功した場合の処理 function(pos) { ...中略... }, // 位置情報の取得に失敗した場合の処理 function(err) { // エラーコードに対応するメッセージを準備(1) var msgs = [ err.message, '位置情報の取得を許可されていません。', '位置情報の取得に失敗しました。', '位置情報を取得中にタイムアウトしました。' ]; // エラーコードに応じてメッセージをダイアログ表示(2) window.alert(msgs[err.code]); }, ...中略... );
エラーメッセージを確認したい場合には(例えばGoogle Chromeであれば)、
(Google Chromeの設定)-[設定]-[高度な設定]-[コンテンツの設定]ボタンをクリックし、表示された[コンテンツの設定]ウィンドウから[現在地]欄の[例外の設定...]ボタンをクリックしてください。
[現在地の例外]ウィンドウが表示されますので、そこから現在サンプルを配置しているホストを削除します。
図2:[現在地の例外]ウィンドウ(クリックで拡大) |
サンプルにアクセスすると、[●○が物理的な現在地を追跡する許可を求めています]のようなメッセージが表示されますので、[拒否]ボタンをクリックすると、以下のようなエラーメッセージを確認できます。
図3:現在位置を取得できなかった時のエラーメッセージ(クリックで拡大) |
失敗コールバック関数(サンプルの網掛け部分)の引数errには、エラー情報(PositionErrorオブジェクト)が渡されます。PositionErrorオブジェクトでアクセスできる情報は、以下の通りです。
表3:PositionErrorオブジェクトの主なプロパティ
プロパティ | 概要 | |
---|---|---|
code | エラーコード(戻り値は以下の通り) | |
値 | 意味 | |
0 | 不明なエラー | |
1 | 位置情報の取得を拒否された | |
2 | 位置情報を取得できない | |
3 | 取得処理中にタイムアウトした | |
message | 詳細なエラーメッセージ |
サンプルでは、エラーコード0~3に対応するエラーメッセージを配列msgsにセットしておくことで(1)、codeプロパティの値に応じてメッセージを返しているわけです(2)。
Geolocation APIサンプル
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。
全文検索エンジンによるおすすめ記事
- JavaScriptでローカルファイルを自在に操る- File API
- プラグインは要らない!音声/動画対応したHTML5- / 要素
- HTML+JavaScriptだけでブラウザに図形描画(3)- Canvas API-
- サンプルのプログラムコード解説
- デスクトップアプリライクな操作性を実現するドラッグ&ドロップAPI
- HTML+JavaScriptだけでブラウザに図形描画- Canvas API-
- クッキーより便利になったブラウザ標準ストレージ- Web Storage
- HTML+JavaScriptだけでブラウザに図形描画(2)- Canvas API-
- ブラウザの機能拡張「Gears」とは
- 近くにある病院の場所をキャラクターが音声で教えてくれるアプリを作る