iPhoneアプリで地図をぐりぐり動かす方法。

Tsukasa OISHI

iPhoneアプリは数多しれずだけど、デフォルトのマップアプリのように地図を表示して動かせるアプリは意外にも少ない。その理由は単純で、マップに関するクラスが用意されていないからだ。
iPhoneアプリの開発に入る前は、マップクラスのようなものが用意されていて(UIMapViewみたいな)、簡単に地図をぐりぐり動かせると思っていたのだけど、そうは問屋が卸さなかった。そんなものないのだ。
で、アプリで地図を動かそうとすると、なかなかにメンドくさいことをやらないといけない。
ぼくが今のところ考えている方法はふたつあって、ひとつはUIWebViewを使ってgoogle Map APIを利用する方法。もうひとつはタイル状の地図のイメージを周囲の移動時のバッファ分も含めて取得しておく方法。ぼくが実際に採用したのは前者の方法だ。

1.UIWebViewで、表示領域いっぱいに地図を表示するように設定したweb上のページにアクセスする(UIWebView自体はイベントを無視するようにしておく)。
2.タッチパネルのイベントをキャッチして、その動きを実現するようにJavascriptのコードを生成し、UIWebViewに投げてあげる。
3.地図上のピンや、ボタンなどは、iPhone側のオブジェクトとして配置する。

この方法で実装した地図は、iPhone Simulator上ではストレスなく気持ちよく動く。まったく問題ない。しかしiPhone実機上ではレスポンスの悪い動きになってしまう。アクションにワンテンポ遅れて地図がついてくるのだ。さらに拡大・縮小がとても遅い。拡大・縮小に関しては仕方なくそれ用のボタンを配置したけど、はっきりいってカッコ悪い。
レスポンスを求めるなら、二番目の方法を試してみたほうがよさそう。だれかもっとうまいやり方を持っていたら教えてほしいな。