📍

iOS17.0〜使用できるSwiftUI用MapKitのAPIサンプル集

2024/04/04に公開

概要

MapKitは主にアプリに地図を表示する際に使用するフレームワークですが、iOS17.0〜SwiftUIに対応した様々なAPIが追加されましたのでサンプル集としてまとめました。

※ MapKitはAppKitとUIKit用とSwiftUI用に分かれていますのでUIKit用のAPIを見たい方は以下からどうぞ。
https://developer.apple.com/documentation/mapkit/mapkit_for_appkit_and_uikit

環境

この記事は以下のバージョン環境のもと作成されたものです。
【Xcode】15.1
【iOS】17.0

サンプル集

サンプルはGitHubで公開していますのでクローンしてXcodeでビルドするとすぐに試せるようになっています!

Simulator Screen Recording - iPhone 15 Pro - 2024-04-01 at 20 12 23

https://github.com/oka-yuji/iOS17-MapKit-Sampler

また以下ではサンプルの紹介をしていますが、気になるセクションだけ読んだり、そのままコピペで試せるので是非気になる所から読んだり触ったりしてみてください。

1.MapStyle Sample

MapStyle を使用して、平面画像からリアルな 3D 表現まで簡単に表示できるサンプル

Simulator Screen Recording - iPhone 15 Pro - 2024-04-01 at 21 05 50

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/MapStyleSample.swift#L8-L16

2.Annotation Sample

カスタマイズしたアノテーションを任意の位置に表示できるサンプル

altテキスト

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/AnnotationSample.swift#L11-L40

3.MapCircle Sample

地図上の任意の位置を丸で表示するサンプル

altテキスト

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/MapCircleSample.swift#L11-L18

4.MapPolygon Sample

ポリゴンで覆われた地図上の任意の位置を表示するサンプル

altテキスト

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/MapPolygonSample.swift#L11-L18

5.MapPolyline Sample

地図上の任意の位置に直線を表示するサンプル
「ルート付きで表示」を切り替えると、さまざまなルートが表示されます

simple routes
altテキスト altテキスト

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/MapPolylineSample.swift#L11-L134

6.Marker Sample

地図上の任意の位置にカスタマイズしたマーカーを表示するサンプル

altテキスト

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/MarkerSample.swift#L11-L21

7.UserAnnotation Sample

現在位置を表示するサンプル
MapUserLocationButton をタップすると現在地が表示されますが、これはプレビューと実機でのみ機能します。
※アプリが位置情報へアクセスすることを許可した場合のみ使用できます

altテキスト

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/UserAnnotationSample.swift#L11-L39

8.MapControls Sample

MapControlsで機能的なボタンを表示するサンプル

altテキスト

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/MapControlsSample.swift#L11-L32

9.LookAroundPreview Sample

LookAroundPreviewで任意の場所を表示するサンプル
プレビューのみの表示と地図からの表示を切り替えることができます。

Simulator Screen Recording - iPhone 15 Pro - 2024-04-01 at 21 41 35

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/LookAroundPreviewSample.swift#L11-L62

10.MapFeature Sample

mapFeatureSelectionContentを使用して地図上の表記をタップしたときに表示される大きなテキストのサンプル

Simulator Screen Recording - iPhone 15 Pro - 2024-04-01 at 21 46 50

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/d0386041a9c8f200e962f125ecbffa43c37f6aef/MapKitSamplerForiOS17/MapKitSamplerForiOS17/MapFeatureSample.swift#L11-L36

11.MapCamera Sample

現在地を瞬時に表示するMapCameraとuserLocationのサンプル
現在地を表示するにはプレビューまたは実機でのみ動作します
シミュレーターにはフォールバック位置が表示されます

altテキスト

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/MapCameraSample.swift#L11-L21

12.MapReader Sample

地図上でタップした位置の経度と緯度を取得するサンプル

Simulator Screen Recording - iPhone 15 Pro - 2024-04-01 at 21 54 44

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/MapReaderSample.swift#L11-L42

13.LocalSearch Sample

​​TextFieldに検索したい文字を入力し、「虫眼鏡」をタップすると地図上に検索結果マーカーが表示され、マーカーをタップするとセーフエリア(下)に詳細情報が表示されるサンプル

Simulator Screen Recording - iPhone 15 Pro - 2024-04-04 at 07 58 20

https://github.com/oka-yuji/iOS17-MapKit-Sampler/blob/c9dd3019391ffcea93c7cb37869d345c89f11558/MapKitSamplerForiOS17/MapKitSamplerForiOS17/LocalSearchSample.swift#L11-L94

iOS17-MapKit-Sampler

以上サンプル集の紹介でした。
上記のサンプルは以下のリンク先にiOS17-MapKit-Samplerとして公開していますので、cloneしてXcodeでビルドすればすぐにお試しいただけます。
(良ければ⭐️クリックしてくれると励みになります)

https://github.com/oka-yuji/iOS17-MapKit-Sampler

最後に

SwiftUIでMapKitを用いると最小1行でマップを表示することができます。

import SwiftUI
import MapKit

struct ContentView: View {
    var body: some View {
        Map()
    }
}

個人的にはMap系は難しいイメージがありましたが、これ程短いコードで壮大なViewを表示できるMapKitが大好きになりました。
また今後も良いサンプル思いつきましたら追加していきたいと思いますのでいいねと感じましたら♡と☆押していただけると励みになります!

参考一覧

MapKit for SwiftUI
https://developer.apple.com/documentation/mapkit/mapkit_for_swiftui

Meet MapKit for SwiftUI
https://developer.apple.com/videos/play/wwdc2023/10043/

Discussion