株式会社ライブキャストロゴ 株式会社ライブキャスト

flashcast:フリーで働くITエンジニア集団のブログ: iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(UI編)の続きです。

iPhone OS 3.0のSafariでGPS機能を利用し、現在地の緯度・経度を取得します。

前回同様、以下のサイトを参考にしました。
各種デバイスの読み取り – iPhone 3G DevWiki

javascriptで現在地の緯度・経度を取得します。

 function initialize() {
  if (navigator != null && navigator.geolocation != null) {
   navigator.geolocation.watchPosition(onLocationChanged);
  }

  map = new GMap2(document.getElementById("map_canvas"));
  map.setCenter(new GLatLng(lat, lng), 15);
  GEvent.addListener(map, "click", onMapClick);
  geocoder = new GClientGeocoder();
 }

 function onLocationChanged(e) {
  lat = e.coords.latitude;
  lng = e.coords.longitude;
  getAddress(new GLatLng(lat, lng));
 }


navigatorオブジェクトのgeolocationを利用します。
ブラウザやプラットフォームによってはサポートされていない場合があるため、PCブラウザでアクセスされた場合も考慮して、存在チェックをした後、値を取得します。

if (navigator != null && navigator.geolocation != null) {
navigator.geolocation.watchPosition(onLocationChanged);
}

緯度・経度の取得には、どうやら2種類の関数があるようです。

各種デバイスの読み取り – iPhone 3G DevWiki参照。

今回は移動時の対応もするので、watchPositionを使用しました。

位置が変わるたびに発生するイベントのコールバック関数の中で、緯度・経度を取得し、適切な値であればその地点の住所を表示します。

lat = e.coords.latitude;
lng = e.coords.longitude;

ここまでで、こんなのが出来ました。

現在地の住所を表示します。もし良かったら、試してみてください!
※ 前回のサンプル同様、クリックした場所の住所も表示されます。
※ geolocationがサポートされてないブラウザの場合は、クリックした場所の住所表示のみになります。
iPhone GPS Sample

■参考サイト
各種デバイスの読み取り – iPhone 3G DevWiki