tofucodes diary

にほんごのほう

MapKitの地図をGoogleMap風にカスタマイズする

簡単に現在地の周辺や特定の場所を表示したりするだけならGoogle Map SDKを使えば良さそうなんですが、

アノテーションを充実させたり、検索機能が必要だったりするとMapKitを使う方がベターだったりします。

(知ってる限りではGoogle Mapでの検索はPlace APIで課金が発生する)

とはいえUberみたいなイケてる地図を表示したいという要求がデザイナーから来ることも無きにしも非ず。

そういう場合は、後述する方法でMapKitのメリットを享受しながら見た目だけGoogle Map風に変更する、のが一つの手かと思います。

方法

MapKitの地図はオーバーレイの画像をMKTileOverlayで指定することができるようになっているのでそれを加工します。

MKTileOverlay - MapKit | Apple Developer Documentation

私は今回調べるまで聞いたこともなかったんですが、タイルオーバーレイというのは地図のタイル(小さい単位の区域)を表示する際にタイルのデータを(サーバから)取得して地図の上に表示する仕組みのようです。

タイルのデータの取得先は自分でホストしたり以下のようなプロバイダーからAPIで取得したり、といった感じ。

Tile servers - OpenStreetMap Wiki

Google Maps APIs Styling Wizard

このタイルオーバーレイの仕組みを利用してGoogle Map風のタイルを取得するSDKがこちら👏

github.com

Googleが提供しているGoogle Maps APIs Styling Wizardを利用してタイルデザインのJSONファイルをまずは自分で作成しSDKに渡します。

SDKはそのJSONファイルのパースして、Googleのタイルサーバへとリクエスト、取得したタイルの表示までしてくれるようです。

mapstyle.withgoogle.com

Snazzy Maps

Styling Wizardを利用して自分好みのタイルデザインを作ることも可能ですが、

クールでセクシーなデザインがまとまっているサイトがあるので、そちらから気に入ったものを選ぶこともできます🤩

snazzymaps.com

参考

色々と調べる中で以下のブログを見つけ、まさにこれだ!となりました。感謝。

medium.com