分12連載第3回目の今回は,JavaScriptを利用した位置情報の取得方法を解説します。5など,いくつかのモダンなブラウザではすでに利用できます。プラグインや設定などによって利用できるかどうかは変わってくるため,コードの中で利用可否の判定を行う場合は,ブラウザ名とバージョンで判定するのではなく,geolocationオブジェクトが利用可能かどうかで判定するのが一般的です。位置情報を取り扱うgeolocationオブジェクトは,window.navigatorから取得することができます。window.navigator.geolocationについて,仕様では現在のところ以下の3つのメソッドが提供されています。watchId)watchPositionの定期的な位置情報取得を止めるgetCurrentPositionとwatchPositionの第一引数には,位置情報取得が成功したときのコールバック関数を指定します。コールバック関数は,以下のpositionオブジェクトを受け取ります。position.coords緯度経度などを保持するCordinatesオブジェクト。position.timestamp位置情報を取得した時刻。緯度経度を保持するCordinatesオブジェクトは,以下のプロパティを保持しています。緯度経度に加えて,高度や方位,速度が定義されていますが,デバイスが対応していない場合は取得することはできません。coords.latitude緯度coords.longitude経度coords.altitude高度coords.accuracy正確性(値が小さいほど正確)coords.altitudeAccuracy高度の正確性coords.heading方位coords.speed速度getCurrentPositionとwatchPositionの第二引数には,位置情報取得が失敗したときのコールバック関数を指定します。コールバック関数は,以下のerrorオブジェクトを受け取ります。error.codeエラーコード1.位置情報の取得が許可されていない2.位置情報の取得が利用できない3.タイムアウトerror.messageエラーメッセージgetCurrentPositionとwatchPositionの第三引数には,関数実行時のオプションを指定します。option.enableHighAccuracyより高い正確性を求める(ただし,取得時間が長くなる)スマートフォンでこのオプションを指定するとGPSを利用するoption.timeout処理のタイムアウトoption.maximumAgeキャッシュされている位置情報オブジェクトを許容するキャシュ時間watchPositionはlong値のidを返します。関数にこのidを渡すと,位置情報の監視を停止します。Gearsという名称で提供していたブラウザのプラグインのことです。Gearsを利用すると,ブラウザでローカルDatabaseや,スレッド処理を利用できるようになります。APIと同じですが,微妙に機能が拡張されています。オブジェクトを生成します。APIと同じなので,geolocationオブジェクトを生成した後のコードは,そのまま利用できます。W3Cの定義から拡張されている内容の一つに,Addressクラスがあります。Addressクラスは,watchPositionなどで位置情報を取得した際に,Positionクラスのプロパティの一つとして取得することができ,国名や県名,市町村名など住所のテキストが構造化された形で格納されています。APIに対応していないブラウザでも,位置情報を取得できます。Gearsをプラグインとしてインストールする必要があるので,利用者としては少々敷居が高くなってしまいます。サンプルコードブラウザで位置情報を取得して,ページ内に表示するサンプルを以下に作成してみました。http://ggchop.appspot.com/static/geolocation-api.htmlページ内のstartをクリックすると,位置情報を取得してページ内に緯度経度を表示します。パソコンのブラウザだけでなく,スマートフォンのブラウザでも試してみてください。コードは以下のURLで公開しています。http://github.com/chris4403/geolocation/blob/master/geolocation-api.htmlサンプルコード解説13~24行目では,navigator.gelocationがない場合はGearsが利用できるか試してみて,geolocationオブジェクトが取得できなかった場合は,アラートを表示して処理を終了します。}28~40行目では,位置情報取得が成功した場合に実行される関数を,42~48行目では,取得が失敗した場合に実行される関数を定義しています。それぞれ,取得したオブジェクトの内容をページ中に表示する内容になっています。50~54行目では,位置情報を取得する際のオプションを指定しています。高精度な位置情報を利用するようにし,タイムアウトの時間は10秒,maximumAgeを0にすることで,キャッシュされている位置情報は利用しないようにしています。56~59行目は,位置情報取得処理を開始する関数です。ボタンのラベルを「stop」に変更します。}61~64行目は,位置情報取得処理を停止する関数です。ボタンのラベルを「start」に変更します。}66行目では,ボタンにクリックしたときの処理を紐付けます。GPS著者プロフィール栗栖義臣(くりすよしおみ)株式会社はてな。Perlなどをたしなむ。優秀な若手エンジニアたちに囲まれながら奮闘する毎日。そこにはヒットメーカーの極意があった噂の超高速分析データベースを試してみよう~ログ解析,機械学習なんでもござれ~ワールドワイドで3,500社以上が活用しているビッグデータ高速分析用のデータベース「Vertica」。クエリ性能を簡単に数百倍にする術をご紹介します。「JIRA」をはじめとするアトラシアンのツール群。多くのオープンソースソフトウェアを継続して提供する支えとなっている使い易さを探ってみます。Cloud」が,いよいよ日本でのサービスを本格的に開始します。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。