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

flashcast:フリーで働くITエンジニア集団のブログ: iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(履歴をMap表示編)で履歴画面から地図画面に遷移し、その住所を再表示する機能を実装し、ある程度まとまった感があるので、逆ジオコーディングのWebサービスとして公開したいと思います。

スタイルシートを当てて、見た目を整え、ロジックを少しリファクタリングしました。あわせて、いくつか機能を拡張したので、メモしておきます。

●地図画面
1)メール送信機能
パラメータで緯度・経度を取得してその住所を表示できるようにしたので、

mailto:?body=

で、bodyにURLを入れるようにしました。

2)吹き出しを閉じる
吹き出しの中のデフォルトの閉じるボタンは小さくて、iPhoneでは押しづらいので別に用意しました。

3)地図のタイプを選択できる機能。
Google Mapsの右上部に出る「地図」「航空写真」「地図+写真」コントロールを表示するようにしました。

var mapControl = new GMapTypeControl(true);

コンストラクタの引数にtrueを渡すと略語表示になります。極力、表示領域内の地図を隠さないようにします。

4)cookieへの保存処理。
デフォルト表示のための情報をいくつか(前回住所検索に使用した緯度・経度、選択中の地図のタイプ、表示中のzoomレベル)cookieに保存するようにしました。

5)性能改善
大きく2つあります。

  • 1つ目は、不要なGPSの監視を極力なくすように、こまめにON/OFFするような実装を心がけました。
  • 2つ目はなべっちにアドバイスをもらったGPSの誤差についてです。GPSで検知した緯度・経度に誤差が発生してしまうことはどうしようもありません。その誤差を少なくする工夫が必要です。2点間の移動距離の実測値より、誤差の出る傾向を見た結果、移動時より、静止時のほうが誤差が大きいことに気付きました(数100メートル単位の誤差がある)。移動時には30分間で移動距離が50メートル以上になることが数回あるくらいだったので、今回はその誤差を極力検知しないようにロジックに反映しました。

実はたいしたことはしてないです。flashcast:フリーで働くITエンジニア集団のブログ: iPhone OS 3.0のSafariでGPS機能を使ったWeb Applicationを作る!(iPhoneでテスト編)で移動距離が30メートル以上の場合に、住所の表示を行うようにしましたが、さらに、移動距離が50メートル以上の場合は、それが連続した時のみ表示を行うようにしました。

●履歴画面
1)日別一覧画面を追加
住所の履歴が増えてきた場合、保存された住所を全て一覧表示すると、下の方を見たい場合には何度もスクロールさせないといけないので大変です。なので、日毎の履歴一覧を表示するようにしました。まず、住所を保存した日の一覧が表示されますので、見たい日をクリックした後、その日に保存された住所の一覧が表示されます。一覧表示する量を減らすことにより、スクロールする量、頻度を少なくさせることができたと思います。

2)一覧からの履歴削除機能
登録機能があるなら、削除機能も必要でしょう。ということで、履歴一覧に削除ボタンを追加しました。変更機能は・・・あまりその必要性がなさそうなので、実装していません。

●全体
1)(一応)多国語対応
住所表示と同時に検索した日時も表示するようにしたので、これをローカライズして表示するようにしました。(実際、どれだけできてるかわかりませんが・・・)

あと、1つ注意点が!
Firefox 3.0.11 + Firebug 1.3.3でgg.google.comからの応答を待ち続ける場合(「gg.google.comからの応答を待っています」)があります。Windows XP、Mac OS X 10.5.7の両環境で発生しました。

普通に表示されることもあれば、一度更新すれば表示されることや、何度更新してもだめなときもあります。

ナゾです。

Firebugを無効にすれば、本現象は発生しなくなります。

7月25日現在では、Firebug1.4がリリースされているので、更新すれば発生しなくなるのではないかと思います。

こんな感じで、完成したのがこちらです。
Stray Child

アプリ名はStray Child(ストレイ チャイルド)にしました。
迷子という意味です。
旅行に行ったときや、道に迷ったときなどに便利だと思います。
よかったら、試してみてください!