【Swift5】Swiftでのジオコーディング・逆ジオコーディング

マップの中心の緯度経度を取得したり、地名を取得したのですが、ジオコーディングってやっぱり記事は多くはないので、さくさくっとコピペで取得できるやつを載せます。笑
ジオコーディングってあまり使う機会がないけど、地図ってなんかワクワクするでございます

開発環境(前提条件)

・Xcode12.5
・Swift5

実装方法

緯度経度(CLLocation)から地域名を取得するのは CLGeocoder が提供してくれてます。
2021年5月12日の時点で、iOS14.5 では以下のコードで日本の住所が取得できます。
全地域を確認したわけではないので、例外はあるかも。

ざっくりフォーマットでいい場合

Apple が用意してくれてるフォーマットがあるので、それを利用しましょう!

取得できる文字列としては、都道府県〜番地まで丸ごとです。
住所をフルで使うだけならこのフォーマットで十分だと思います!

細かくフォーマットしたい場合

市区町村までを利用したい場合や番地がいらない場合など、細かくフォーマットしたい場合はちょいしんどいです。w

administrativeArea って書かれても意味不明だと思うので、わかりやすいようオブジェクトの名前に都道府県や市区町村などを名付けました。笑
地名としては Apple のフォーマットと一緒になります!

地域名から緯度経度を取得するのも簡単です。

どちらにも言えますが、個人的に気をつけた方がいいなと思った点は以下の2つ。
・アプリごとにレート制限されているので、短時間で大量にリクエストしないような設計
・通信環境に影響されるので、取得〜完了までの UI/UX は考慮した方がいい

アプリによって様々な実装方法があると思うので、実装前にドキュメントを読んだ方が良さそう。

さいごに

ドキュメントってもっと探しやすくならないかな
めっちゃ奥深くまで探らないと分からない。笑

違うよ!とかこういう方法あるよ!ってのがあれば教えてください。
では( ¯·ω·¯ )

コメント