iPhone3.0のSafariで位置情報を取得してみました

By uchida - 09/06/18 - このエントリをはてなブックマークに追加このエントリをYahoo!ブックマークに追加このエントリをdel.icio.usに追加このエントリをFC2ブックマークに追加

本日からiPhone3.0のアップデートが可能になりました。
先日お伝えした通り、このメジャーアップデートでブラウザから位置情報を取得できるようになります。
 
前回の記事「iPhoneのSafariが位置情報取得に対応するそうです」
 
ということで実際組み込んでみました。
また、3.0の他の新機能をちょこっとレビューしてみます。

位置情報を取得してみる

navigator.geolocation.watchPosition(callback, handleError)

これを宣言すると、そのページにアクセスした時点で以下のようなメッセージが表示されます。他の携帯キャリアと似ています。
 
写真
 
引数のcallbackは読んで字のごとくコールバック関数を指定します。
handleErrorはエラーのコールバック関数を指定します。
 
コールバック関数に与えられる値はそれぞれ以下になります。

引数.coords.latitude 緯度 世界測地系(WGS84)
引数.coords.longitude 軽度 世界測地系(WGS84)
引数.coords.altitude 高度
引数.coords.accuracy 精度レベル (メートル)
引数.coords.altitudeAccuracy 高度の精度レベル (メートル)
引数.coords.heading 方角 (機種によっては取得できない)
引数.coords.speed 対地速度(使い道がわかりません)

 
 

エラーの取得

もし、位置情報を取得中にエラーが発生すると、エラーハンドラで指定したメソッドでエラーコードを取得できます。
 

UNKNOWN_ERROR value 0 取得プロセスエラー
PERMISSION_DENIED value 1 GPS利用許可エラー
POSITION_UNAVAILABLE value 2 位置情報取得エラー
TIMEOUT value 3 タイムアウト

これらのコードは引数の「code」から取得できます。

簡単なサンプル

sample.html
 

<html>
<head>
<style>
p { font-size: 12px;
color: rgb(0, 220, 98);
background-color: black;
}
body { background-color: black; }

</style>
<script>

var count = 0;
var log = "";

function callback(a) {
count ++;
var d = document.getElementById("d");
d.innerHTML = log = log + "<p> " + count +  " lat = " + a.coords.latitude + " long = " + a.coords.longitude + " accuracy = " + a.coords.accuracy + "<a href=http://maps.google.com/maps?geocode=&q="+a.coords.latitude+"+"+a.coords.longitude+"> map </a></p>";
}

function handleError(a) {
var d = document.getElementById("d");
d.innerHTML = log = log + "<p> error: " + a.code + "</p>";

}

navigator.geolocation.watchPosition(callback, handleError)

</script>
</head>
<body>
<div id="d">
</body>
</html>

 
サンプルHTMLの実行結果
写真2
 

3.0アップデート簡単レビュー

バックアップはとったのですが、iTunesに繋いでアップデートボタンを押すと後はサクサク作業が進み完了しました。
元にあったデータやアプリは消えずにそのまま使えるようです。
 
いろいろな機能が追加されたのですが、コピペができるようになったのはかなりうれしいですね。使い方も非常にシンプルで使い易くてタッチパネルを生かした仕様になっています。
 
GPS機能にしても取得できるパラメータが多いのがいいですね。多分iPhone 3GSでないと取得できないのがあるとは思いますが、JavaScriptが使える分、高機能なWebアプリとか作れそうですね。
 

参考サイト

Geolocation API Specification
iPhone’s Safari Browser to include Geolocation – Computerworld Blogs

Posted in GPS, iPhone • Tags: , , , , Top Of Page