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

Stray ChildをAndroid対応したいと思います。
まずは、現在地の住所を表示する部分です。

現在地の緯度・経度の取得には、Androidにデフォルトでインストールされている、Gears API – Google Codeを使います。

まず、ダウンロードしたgears_init.jsを読み込みます。

<script type="text/javascript" src="../js/gears_init.js"></script>

これで、以下のGPS関連のAPIが使えるようになりました。
Geolocation API – Gears API – Google Code

gps = google.gears.factory.create('beta.geolocation');


navigatorオブジェクトのgeolocationと使い分けができるようにします。

function initGeoLocation() {
 if (gps == null) {
  if (navigator != null && navigator.geolocation != null) {
   gps  = navigator.geolocation;
  }
  else {
   try {
    gps = google.gears.factory.create('beta.geolocation');
   }
   catch (error) {
    return false;
   }
  }
 }

 return true;
}

GPS監視の開始と停止のAPIはiPhoneの時と同じなので、

function changeWatchLocation(isWatch, isDbConnect) {
 if (gps != null) {
  if (isWatch) {
   id = gps.watchPosition(
    function(e) {
     onLocationChanged(e, isDbConnect);
    },
    function(error) {
     alert(error.message);
    }
   );
  }
  else {
   if (id != null) {
    id = gps.clearWatch(id);
   }
  }
 }
}

環境の違いは意識せずに、GPSが利用できる時には監視を開始、停止できるようにしました。

実行時には、確認メッセージが表示されます。

これはエミュレータでの実行結果なのですが、エミュレータ上ではGPSは機能しないので、

Network provider at http://www.google.com/loc/json did not provide a good position fix.

というメッセージが表示されてしまいます。

実機がないのでエミュレータでなんとかシュミレーションさせたかったのですが、やり方がわかりません。ネイティブアプリでシュミレーションするやり方はあるのですが、今回の対応には効きませんでした。

なので、知り合いにお願いして、試してもらいました。

ちゃんと、機能しているようです。
実機を手に入れたら、あらためて、しっかりテストしたいと思います。

※ メンバーから、現在地を表示しているときと、地図をクリックして住所が表示されているときの違いがわかりにくい、という声があったので、現在地を表示しているときには、吹き出しの中に、

を表示するようにしました。

Androidを持っている方、是非、試してみてください!
Stray Child