ついに iPhone Safari ブラウザから位置情報を取得できるようになります

| | コメント(0)

以前から、国内のモバイルブラウザのように、iPhone のブラウザからでも GPS を使えるようにすべきということをつねづね言ってきたわけですが、ようやく時期バージョンから iPhone でも実装されるようです。

iPhone's Safari Browser to include Geolocation

このブログでも度々言及してきた、W3C の Geolocation API の仕様に沿っているものになるようです。

というわけで、さっそく実装してみました。
http://lab.cirius.co.jp/geoloc.html
(iPhone OS 3.0 beta5 以降の Safari ブラウザで閲覧してください。)

上記URL にアクセスすると、まずは Safari 自体の Geolocation 機能の利用許可が表示されます。
iphone_geoloc_1.jpg
次に、このページが存在するドメインに対して Geolocation 機能の利用許可が表示されます。
iPhone_geoloc_2.jpg
取得したロケーションを Google Maps に表示してみました。ちゃんとシリウスのオフィスが表示されています。
iphone_geoloc_3.jpg
確認ダイアログですが、そのドメインでの最初の利用時にのみ聞かれて、一度許可をすればそれ以後は表示されないようになっています。 この辺は、GPS を利用する度に都度許可をしなくてはいけない日本の仕組みよりもスマートですね。

実装方法は上のページのソースを見てもらえればわかりますが、

navigator.geolocation.watchPosition(locupdate, handleError);
というメソッドで、イベントハンドラを登録するだけで使えます。 イベントハンドラ側の function は以下のようにしてみました。
function locupdate(pos) { 
    count ++;
    var d = document.getElementById("d");
    d.innerHTML = "lat : " + pos.coords.latitude + 
             "<br/>long : " + pos.coords.longitude + 
             "<br/>accuracy : " + pos.coords.accuracy + "<br/>";
    if (count == 1){
      initialize(pos.coords.latitude, pos.coords.longitude);
    }
}
pos というパラメータに取得されたユーザの位置情報が含まれています。
initialize という関数の中で、与えられた緯度経度の Google Maps 地図を表示しています。
(locupdate は位置情報を連続的に更新するので、最初の取得時にのみ地図を表示するようにしています。)

関連記事

Gears の Geolocation API の Wi-Fi 測位を使ってみた
Firefoxの位置情報把握アドオン「Geode」を使ってみた
Google ClientLocation API を使って IP アドレスから現在地を取得

コメントする