マップは、API で UIView
のサブクラスである GMSMapView
クラスで表されます。地図は Maps SDK for iOS で最も重要なオブジェクトであり、マーカーやポリラインなどの他のオブジェクトを追加、削除、管理するために必要なメソッドを提供します。
はじめに
Maps SDK for iOS を使用すると、iOS アプリに Google マップを表示できます。これらの地図は、Google マップ iOS アプリに表示される地図と同じ表示形式であり、SDK によって同じ機能の多くが公開されます。
この API は、マッピング機能に加え、iOS UI モデルと整合するさまざまな操作もサポートしています。たとえば、タップやダブルタップなどのユーザー ジェスチャーに反応する応答者を定義することで、地図との連携を設定できます。
Map オブジェクトを操作する際の主要なクラスは GMSMapView
クラスです。GMSMapView
は次のオペレーションを自動的に処理します。
- Google マップサービスに接続する。
- 地図タイルをダウンロードする。
- タイルをデバイスの画面に表示する。
- 移動やズームといった各種コントロールを表示する。
- 移動やズームのジェスチャーに対し、地図を移動したり拡大縮小したりして反応する。
- 2 本指でのジェスチャーに対し、地図の表示角度を傾けて反応する。
これらの自動的な操作に加えて、GMSMapView
クラスによって公開されるプロパティとメソッドを通じて地図の動作と外観を制御できます。GMSMapView
を使用すると、GMSCameraPosition
クラスを使用して、マーカー、地面オーバーレイ、ポリラインを追加および削除したり、表示する地図の種類を変更したり、地図上に表示する内容を制御したりできます。
SwiftUI で地図を作成する
SwiftUI では、宣言型アプローチを使用して UI を作成するための別の方法を利用できます。ビューの外観とさまざまな状態を SwiftUI に伝えると、あとはシステムが自動的に処理してくれます。基となる状態がイベントやユーザーのアクションによって変化すると、SwiftUI が自動的にビューを更新します。
Maps SDK for iOS は UIKit
を基盤として構築されており、SwiftUI 対応のビューはまだ提供されていません。SwiftUI でマップを追加するには、UIViewRepresentable
または UIViewControllerRepresentable
に準拠している必要があります。詳しくは、SwiftUI を使って iOS アプリに地図を追加する Codelab をご覧ください。
地図を追加する
地図を追加する基本的な手順は次のとおりです。
SDK の入手、API キーの取得、必要なフレームワークの追加は、次の手順に沿って行います。
AppDelegate
で、GMSServices
のprovideAPIKey:
クラスメソッドに API キーを指定します。ViewController
を作成または更新します。このビュー コントローラが表示される際に地図を表示する場合は、必ずloadView
メソッド内で作成してください。地図の中心とズームレベルを指定する
GMSCameraPosition
オブジェクトを作成します。GMSMapView
オブジェクトをインスタンス化するときは、GMSCameraPosition
オブジェクトを必須パラメータとして渡す必要があります。GMSMapView
クラスを作成してインスタンス化するには、GMSMapView
mapWithFrame:
メソッドを使用します。この地図をビュー コントローラの唯一のビューとして使用する場合は、CGRectZero
を地図のフレームとして使用できます。地図は自動的にサイズ変更されます。ビュー コントローラのビューとして
GMSMapView
オブジェクトを設定します(例:self.view = mapView;
)。
次の例では、シンガポールの繁華街を中心としたマップをアプリに追加しています。
Swift
import GoogleMaps class MapObjects : UIViewController { override func viewDidLoad() { super.viewDidLoad() let camera = GMSCameraPosition(latitude: 1.285, longitude: 103.848, zoom: 12) let mapView = GMSMapView(frame: .zero, camera: camera) self.view = mapView } }
Objective-C
#import "MapObjects.h" @import GoogleMaps; @implementation MapObjects - (void)viewDidLoad { [super viewDidLoad]; GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:1.285 longitude:103.848 zoom:12]; GMSMapView *mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera]; self.view = mapView; } @end
この手順を行った後、GMSMapView
オブジェクトをさらに構成できます。
次のステップ
これらの手順を完了すると、地図を設定できるようになります。