地図を追加する

プラットフォームを選択: Android iOS JavaScript

マップは、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 をご覧ください。

地図を追加する

地図を追加する基本的な手順は次のとおりです。

  1. SDK の入手、API キーの取得、必要なフレームワークの追加は、次の手順に沿って行います。

    1. Google Cloud Console でセットアップする

    2. API キーを使用する

    3. Xcode プロジェクトを設定する

  2. AppDelegate で、GMSServicesprovideAPIKey: クラスメソッドに API キーを指定します。

  3. ViewController を作成または更新します。このビュー コントローラが表示される際に地図を表示する場合は、必ず loadView メソッド内で作成してください。

    1. 地図の中心とズームレベルを指定する GMSCameraPosition オブジェクトを作成します。GMSMapView オブジェクトをインスタンス化するときは、GMSCameraPosition オブジェクトを必須パラメータとして渡す必要があります。

    2. GMSMapView クラスを作成してインスタンス化するには、GMSMapView mapWithFrame: メソッドを使用します。この地図をビュー コントローラの唯一のビューとして使用する場合は、CGRectZero を地図のフレームとして使用できます。地図は自動的にサイズ変更されます。

    3. ビュー コントローラのビューとして 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 オブジェクトをさらに構成できます。

次のステップ

これらの手順を完了すると、地図を設定できるようになります。