【Swift】MKMapViewでルート検索を実装してみた

前々から実装しようと思っていたルート検索機能を実装してみました。

目的地と現在地の座標さえ分かれば実装できます。

作ってみたアプリはこんな感じ。

目的地のピンをタップして、経路ボタンを押すとルートが表示されるようにしました。

所要時間がトーストで表示されるようにしました。

コードは以下の通り。

ルート検索した時に縮尺を変える処理が参考記事には書いてありましたが、縮尺変更は使いづらかったので消しました。

MKDirectionsを使ってリクエストを投げるとAppleのサーバから目的までのルート情報が手に入ります。

polylineが目的地までのルートを表示する線です。

この線を青色で描画するためにmapViewに以下のレンダラーを追加します。

ちなみにこのレンダラーを追加したら、エミュレータで以下のエラーが出るようになりました。

Xcodeのバグのようです。。。

実機だと出ないのですけどね。

polylineは一度書くとずっと残り続けるのでどこかのタイミングでremoveする必要があります。

ピン選択が解除された時に、経路線も削除するようにしました。

参考

https://qiita.com/entaku0818/items/8ba9065c0074dcfb0ea7