【特集】
最後に紹介するのは、プログラムが実行されている位置の情報を取得することができるGeolocation APIだ。
Geolocation APIは、window.navigatorオブジェクトに新しく追加された「geolocation」プロパティにアクセスすることで利用できる。同プロパティを通じて呼び出せるメソッドは以下の3つしかない。
getCurrentPosition()とwatchPosition()は、どちらも第1引数以外省略することができる。なので、以下のような非常にシンプルなコードで位置情報を取得することが可能だ。
navigator.geolocation.getCurrentPosition(function(position) {
// 現在位置を用いたコード
});
また、getCurrentPosition()/watchPosition()の第3引数として渡すことのできるオプションには以下のようなものがある。
これらのオプションを指定した例を以下に示す。
navigator.geolocation.getCurrentPosition(
function(position) {
// 位置情報取得に成功した場合の処理
},
function(error) {
// 位置情報取得に失敗した場合の処理
},
// 以下がオプション
{
// 1分以内に取得した位置情報のみ使用する
maximumAge: 60 * 1000,
// 5秒以内に取得できなかったらエラー
timeout: 5000
}
);
位置情報の取得に成功すると、コールバック関数にPositionオブジェクトが渡される。Positionオブジェクトは以下のようなプロパティを持つ。
以下のサンプルは、Geolocationで取得した現在位置の情報をGoogle Mapsで表示するものだ。Google Maps APIはバージョン3を用いている。
|
|
Geolocationによるサンプル |
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function init() {
// 現在位置を取得
navigator.geolocation.getCurrentPosition(function(position) {
var coords = position.coords;
// 取得した現在位置で、Google Mapsの緯度経度情報を生成
var latlng = new google.maps.LatLng(coords.latitude, coords.longitude);
var myOptions = {
zoom: 14,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
// マップを生成
var map = new google.maps.Map(document.getElementById("map"), myOptions);
// 地図にマーカーをつける
var marker = new google.maps.Marker({
position: latlng,
map: map
});
var infowindow = new google.maps.InfoWindow({
content: "イマココ!"
});
infowindow.open(map, marker);
});
}
</script>
</head>
<body onload="init()">
<div id="map" style="width:400px; height:400px"></div>
</body>
</html>
ただ、筆者のWi-Fi環境で上記のサンプルを試すと、現在の位置は皇居内であると示されてしまった。同様の現象は多々報告されているようなので、サンプルが悪いわけではないようだ。
今回は、HTML5時代のWebアプリケーション開発に有用と思われるAPIをできる限り多く解説することを主眼とさせていただいた。HTML5の仕様はまだまだ流動的であり、実装状況も刻一刻と変化しているが、HTML5に対して強く興味を持っている方々に少しでも詳しい情報をお届けできたならば幸いである。
| 詳解! HTML 5と関連APIの最新動向 - 新タグ&API編 [2009/7/31] |
| HTML 5アプリケーション開発について議論しよう! HTML5-Developers-jp発足 [2009/7/27] |
| FirefoxにHTML 5パーサ、Java→C++自動変換で性能改善3% [2009/7/13] |
| HTML 5の"カンニングペーパー" [2009/7/8] |
| HTML 5、Acid3……Web最新動向をMeyer氏が総覧 - Web Directions East [2008/11/15] |
| トマトを食すると、酔いにくく覚めやすい!? [19:10 5/28] |
| Xilinx、FPGA「Kintex-7」エンベデッド キットを発表 [18:13 5/28] |
| Freescale、64ビットマルチコアプロセッサ「QorIQ P5」ファミリを発表 [18:10 5/28] |
| パナソニック、見える化から見せる化へ、LAN対応エネルギーモニタを発表 [18:06 5/28] |
| 愛媛大、「ウルトラ赤外線銀河」は4個以上の銀河の衝突で誕生したと発表 [18:00 5/28] |
|
ストーム、Ivy Bridge世代のXeon E3標準搭載のBTOサーバ/WSを発売 [19:21 5/28] パソコン |
|
G-Tune、11.6型サイズにGeForce GT 650M標準搭載の『モンハン』推奨ノート [19:12 5/28] パソコン |
|
トマトを食すると、酔いにくく覚めやすい!? [19:10 5/28] エンタープライズ |
|
山陽トランスポート、iPad/iPhoneに対応した縦置きタイプの充電スタンド [19:08 5/28] 携帯 |
|
上海問屋、iPhone 4Sをワイルドにする迷彩柄・アニマル柄ステッカー10種類 [19:07 5/28] パソコン |
4つの診断で、自分の適性を見つめなおそう!
働くこと・挑戦し続けることへの思いを綴ったインタビュー
あなたにピッタリのアドバイスを読むことができます。
転職に必要な情報が収集できます
企業からアプローチのメッセージが届きます。