| 目次 |
|---|
|
・Geolocation APIとは ・Geolocation APIの使い方 |
Geolocation APIは、緯度経度などの現在位置(座標)を取得する仕組み(API)です。
なお、このAPIはW3C独自に策定したものです。
フィーチャーフォン、特にガラパゴス携帯と揶揄される日本の携帯電話の多くは、既にGeolocation APIと同等の機能を各キャリア、機種独自で実装してきました。
しかし、各キャリア毎、機種毎によってその取得方法や精度が異なります。
Geolocation APIは、位置情報取得のAPIを標準化しています。
かつ、Javascriptから扱うことができます。
(ガラパゴス携帯では、a要素でしか扱えなかったりするものもあります。)
これにより、PCでもスマートフォンでも共通して扱えるようになりました。
(ガラパゴス携帯は、別途の実装が必要です)
Geolocation APIは、GPS搭載でも、非GPS搭載(その場合はWi-Fiの基地局やIPなどから判定)の場合でも対応します。
例えば、iPhoneなどGPS搭載デバイスにおいても、GPSを搭載していないiPod touchでも、デスクトップPCでも、Geolocation APIで現在位置を取得出来ます。
但し、非GPS搭載デバイスに比べ、iPhoneなどのGPS搭載デバイスの方が精度は当然良くなります。
Geolocation APIは、2011年8月現在以下のブラウザで対応しています。
FireFox 3.5~、Safari 5~、Opera 10.6~、Google Chrome 5.6~、IE 9~
Geolocation APIは、navigatorオブジェクトのgeolocationオブジェクトにて利用します。
「getCurrentPosition」メソッドで、現在の位置情報を取得できます。
リスト1. 位置取得のコード
// 現在の位置情報を取得します。
window.navigator.geolocation.getCurrentPosition(
success_Callback, // 位置情報取得時のコールバック
error_Callback, // 取得失敗時のコールバック
options // 取得時オプション(オブジェクト)
);
// 位置情報取得時のコールバック
function success_Callback( event ){
/*
位置情報を取得できた時実行されます。
結果は変数eventに受け継がれます。
*/
}
// 取得失敗時のコールバック
function error_Callback( event ){
/*
位置情報の取得に失敗時に実行されます。
結果は変数eventに受け継がれます。
*/
}
位置情報を取得できると、「getCurrentPosition」メソッドの第1引数に定義されているコールバック関数が実行されます。
位置情報取得時のコールバック関数の第1引数の内容は以下の通りです。
取得失敗時のコールバック関数の第1引数の内容は以下の通りです。
「getCurrentPosition」メソッドの第3引数 取得時オプション は以下の内容を持つオブジェクトとなります。
「watchPosition」メソッドを使うことで、連続して位置情報を取得します。
「watchPosition」メソッドの各引数は、「getCurrentPosition」メソッドと同様です。
「watchPosition」メソッドは、監視識別IDを返します。
リスト2. 連続取得のコード
// 現在の位置情報を連続取得します。 wid = window.navigator.geolocation.watchPosition( success_Callback, // 位置情報取得時のコールバック error_Callback, // 取得失敗時のコールバック options // 取得時オプション(オブジェクト) );
「clearWatch」メソッドを使うことで、位置情報を連続取得を停止します。
第1引数は、「watchPosition」メソッドの監視識別IDとなります。
リスト3. 連続取得の停止コード
// 連続取得を停止する。 window.navigator.geolocation.clearWatch( wid );
以下は、Geolocation APIのコーディング及び実装例です。
リスト4. Geolocation APIの例
//現在位置を取得する
function myPosition(){
window.navigator.geolocation.getCurrentPosition(
success_Callback, // 位置情報取得時のコールバック
error_Callback, // 取得失敗時のコールバック
{
// 取得時オプション(オブジェクト)
enableHighAccuracy : true,
maximumAge : 0
}
);
}
// 位置情報取得時のコールバック
function success_Callback( event ){
var str = "";
str = "緯度(°) : " + event.coords.latitude + "\n"
+ "経度(°) : " + event.coords.longitude + "\n";
alert(str);
}
// 取得失敗時のコールバック
function error_Callback( event ){
alert( "エラーコード(" + event.code + "):" + event.message );
}
実装例
Geolocation APIは、PC、スマートフォン共通で利用できます。
html5対応のスマートフォンでは、このAPIを使って 行動系アプリを作成することができます。