Hatena::Groupiphone-dev

iOS プログラミングメモ

2013-05-28 (Tue)

[] MapSearch 15:31  MapSearch - iOS プログラミングメモ を含むブックマーク

せめて一週間に一回くらいは勉強を兼ねてサンプルコード読んで感想を書いて人気ブログになってアフィリエイトでウハウハとか思ってたのに、もう一ヶ月も間が空いてしまった。そんなバカな。てかここにアフィリエイトなかったかも。

というわけで今日は MapSearch です。5月17日にアップロードされたサンプル。

iOS6.1から MKLocalSearch ていうクラスが追加されて住所とか地名とかの情報を使って地図の検索ができるようになったっていうサンプルみたい。そうかそうか、そういえば以前は検索なんてできなかったのか。

f:id:ktakayama:20130528154420p:image:w200 f:id:ktakayama:20130528154414p:image:w200

coffee って入力すると coffee 店が見つかるらしいけど、そういうのは日本の地図では対応していないらしくてなんもひっかからない。寂しい。こういうの POI っていうらしくて木下さんが紹介していた。

さて難しいことは置いといて、MapSearch のコードを読んでみるのが目的なので読もう読もう。…さっそく画面遷移に関して疑問が。UIStoryBoardSegue を継承したクラスを作って、そのインスタンスを作ってから perform 実行してるんだけど、なんでだろうか。テーブルの画面ですでに MapViewController のインスタンスを生成して保持してるからっぽいなあ。地図は読み込み遅そうだから使いまわしたかったのかな。確かにこのアプリの場合は2つの画面を行ったり来たりするだけだから、なんども初期化するのは無駄だしいいかも。細かい所だけど凝ってる。

↓ のコード。viewDidLoad 内で DetailSegue (UIStoryBoardSegueを継承したクラス)のインスタンスを作って、tableView didSelectRowAtIndexPath の時に呼び出してる部分のこと。

検索の部分はシンプルでわかりやすかった。検索するんだったら、このコードそのまま使うといいんじゃないかなあ。基本的に - (void)startSearch:(NSString *)searchString; の中で完結してそう。

MapViewController の方は単にリストで保持された MKMapItem にポコポコとピンを立ててるだけで特に思うところはなかった。

終わり。

ちなみに、サンプルコードは以下の RSS で最新情報をチェックしてます。

トラックバック - http://iphone-dev.g.hatena.ne.jp/ktakayama/20130528