課金を有効にして API キーを作成したら、アプリの開発に使用する Xcode プロジェクトを設定できます。
各リリースのリリースノートをご覧ください。
ステップ 1: 必要なソフトウェアをインストールする
Maps SDK for iOS を使ってプロジェクトを作成するには、以下をダウンロードしてインストールする必要があります。
ステップ 2: Xcode プロジェクトを作成し、Maps SDK for iOS をインストールする
CocoaPods を使用
Maps SDK for iOS は CocoaPods ポッドとして提供されています。CocoaPods は、Swift と Objective-C の Cocoa プロジェクトで依存関係を管理するためのオープンソース ツールです。
CocoaPods ツールがない場合は、ターミナルから以下のコマンドを実行して、macOS 上に CocoaPods ツールをインストールします。詳しくは、CocoaPods スタートガイドをご覧ください。
sudo gem install cocoapods
Maps SDK for iOS の Podfile
を作成し、これを使用して API とその依存関係をインストールします。
- Xcode プロジェクトがまだない場合は、ここで作成してローカルマシンに保存します。iOS 開発が初めての場合:
- 新しいプロジェクトを作成します。
- [iOS] > [App] テンプレートを選択します。
- プロジェクト オプション画面で、次の操作を行います。
- プロジェクト名を入力します。
- [バンドル ID] フィールドの値を記録します。その値を使用して、以下の API キーを制限できます。
- プロジェクトの [Interface] を [Storyboard] に設定します。
- [Language] を Swift または Objective-C に設定します。
- プロジェクトのディレクトリに、
Podfile
という名前のファイルを作成します。このファイルでプロジェクトの依存関係を定義します。 Podfile
を編集して、依存関係とそのバージョンを追加します。Maps SDK for iOS に必要な依存関係を含む例を次に示します。source 'https://github.com/CocoaPods/Specs.git' platform :ios, '14.0' target 'YOUR_APPLICATION_TARGET_NAME_HERE' do pod 'GoogleMaps', '8.2.0' end
常に最新の状態に保つために、pod outdated
を定期的に実行して新しいバージョンを検出します。必要に応じて、最新バージョンにアップグレードします。Podfile
を保存します。ターミナルを開き、
Podfile
を含むディレクトリに移動します。cd <path-to-project>
pod install
コマンドを実行します。Podfile
で指定した API とその依存関係がインストールされます。pod install
Xcode を終了し、プロジェクトの
.xcworkspace
ファイルを(ダブルクリックして)開いて、Xcode を起動します。これ以降、このプロジェクトを開くには.xcworkspace
ファイルを使用する必要があります。
既存のプロジェクトの API を更新する手順は次のとおりです。
- ターミナルを開き、
Podfile
を含むプロジェクト ディレクトリに移動します。 pod update
コマンドを実行します。これにより、Podfile
で指定されたすべての API が最新バージョンに更新されます。
XCFramework をインストールする
XCFramework は、Maps SDK for iOS をインストールするために、M1 チップセットを使用するマシンを含む複数のプラットフォームで使用できるバイナリ パッケージです。このガイドでは、Maps SDK for iOS を含む XCFramework をプロジェクトに追加し、Xcode でビルド設定を構成する方法について説明します。
手動で実装する
このガイドでは、Maps SDK for iOS をプロジェクトに手動で追加し、Xcode でビルド設定を行う方法について説明します。
- SDK ソースファイル(GoogleMaps-8.2.0)をダウンロードします。
- ソースファイルを解凍します。[Frameworks] フォルダに移動して XCFramework にアクセスします。
- Xcode プロジェクトがまだない場合は、ここで作成してローカルマシンに保存します。iOS 開発が初めての場合:
- 新しいプロジェクトを作成します。
- [iOS] > [App] テンプレートを選択します。
- プロジェクト オプション画面で、次の操作を行います。
- プロジェクト名を入力します。
- [バンドル ID] フィールドの値を記録します。その値を使用して、以下の API キーを制限できます。
- プロジェクトの [Interface] を [Storyboard] に設定します。
- [Language] を Swift または Objective-C に設定します。
- 次の XCFrameworks を、プロジェクトの [フレームワーク、ライブラリ、埋め込みコンテンツ] の下にドラッグします。必ず、各 XCFramework で [Do Not Embed] を選択してください。
GoogleMaps-x.x.x/GoogleMapsBase.xcframework
GoogleMaps-x.x.x/GoogleMaps.xcframework
GoogleMaps-x.x.x/GoogleMapsCore.xcframework
- (プレミアム プランをご利用のお客様のみ)
GoogleMaps-x.x.x/GoogleMapsM4B.xcframework
- プロジェクトで
GoogleMaps.xcframework
を右クリックし、[Show In Finder] を選択します。 GoogleMaps.bundle
をios-arm64_x86_64-simulator/GoogleMaps.framework/Resources
フォルダから Xcode プロジェクトの最上位ディレクトリにドラッグします。プロンプトが表示されたら、[Copy items if needed] が選択されていないことを確認します。- プロジェクト ナビゲータからプロジェクトを選択し、アプリのターゲットを選択します。
- アプリケーションのターゲットの [Build Phases] タブを開き、[Link Binary with Libraries] 内で、以下のフレームワークとライブラリを追加します。
Accelerate.framework
CoreData.framework
CoreGraphics.framework
CoreImage.framework
CoreLocation.framework
CoreTelephony.framework
CoreText.framework
GLKit.framework
ImageIO.framework
libc++.tbd
libz.tbd
Metal.framework
OpenGLES.framework
QuartzCore.framework
SystemConfiguration.framework
UIKit.framework
特定のターゲットではなくプロジェクトを選択して、[Build Settings] タブを開きます。[Other Linker Flags] セクションで
-ObjC
を追加します。これらの設定が表示されない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。Places SDK for iOS XCFramework をインストールするには、Places SDK for iOS スタートガイドをご覧ください。
カルタゴ付き
手動で実装する
このガイドでは、Maps SDK for iOS をプロジェクトに手動で追加し、Xcode でビルド設定を行う方法について説明します。
- SDK ソースファイル(GoogleMaps-8.2.0)をダウンロードします。
- ダウンロードしたソースファイルを解凍します。
- Xcode プロジェクトがまだない場合は、ここで作成してローカルマシンに保存します。iOS 開発が初めての場合:
- 新しいプロジェクトを作成します。
- [iOS] > [App] テンプレートを選択します。
- プロジェクト オプション画面で、次の操作を行います。
- プロジェクト名を入力します。
- [バンドル ID] フィールドの値を記録します。その値を使用して、以下の API キーを制限できます。
- プロジェクトの [Interface] を [Storyboard] に設定します。
- [Language] を Swift または Objective-C に設定します。
- 次のバンドルをプロジェクトにドラッグします。(プロンプトが表示されたら、[Copy items if needed, use the same version] を選択します)。
GoogleMaps-x.x.x/Base/Frameworks/GoogleMapsBase.xcframework
GoogleMaps-x.x.x/Maps/Frameworks/GoogleMaps.xcframework
GoogleMaps-x.x.x/Maps/Frameworks/GoogleMapsCore.xcframework
- (プレミアム プランをご利用のお客様のみ)
GoogleMaps-x.x.x/M4B/Frameworks/GoogleMapsM4B.xcframework
- プロジェクトで
GoogleMaps.xcframework
を右クリックし、[Show In Finder] を選択します。 GoogleMaps.bundle
をResources
フォルダから Xcode プロジェクトの最上位ディレクトリにドラッグします。プロンプトが表示されたら、[Copy items into destination group's folder] が選択されていないことを確認します。- プロジェクト ナビゲータで目的のプロジェクトを選択し、アプリのターゲットを選択します。
- アプリケーションのターゲットの [Build Phases] タブを開き、[Link Binary with Libraries] 内で、次のフレームワークとライブラリを追加します。
Accelerate.framework
CoreData.framework
CoreGraphics.framework
CoreImage.framework
CoreLocation.framework
CoreTelephony.framework
CoreText.framework
GLKit.framework
ImageIO.framework
libc++.tbd
libz.tbd
Metal.framework
OpenGLES.framework
QuartzCore.framework
SystemConfiguration.framework
UIKit.framework
(特定のターゲットではなく)プロジェクトを選択して、[Build Settings] タブを開きます。[Other Linker Flags] セクションで
-ObjC
を追加します。これらの設定が表示されない場合は、[Build Settings] バーのフィルタを [Basic] から [All] に変更します。Places SDK for iOS をインストールする方法は、Places SDK for iOS スタートガイドをご覧ください。
ステップ 3: API キーをプロジェクトに追加する
API キーを取得するでは、アプリの API キーを生成しました。次に、そのキーを Xcode プロジェクトに追加します。
以下の例で YOUR_API_KEY
とある箇所は、実際の API キーに差し替えてください。
Swift
次のように、API キーを AppDelegate.swift
に追加します。
- 次の import ステートメントを追加します。
import GoogleMaps
- API キーを使用して、
application(_:didFinishLaunchingWithOptions:)
メソッドにGMSServices.provideAPIKey("YOUR_API_KEY")
を追加します。 - Places API も使用している場合は、
GMSPlacesClient.provideAPIKey("YOUR_API_KEY")
のようにキーを再度追加します。
Objective-C
次のように、API キーを AppDelegate.m
に追加します。
- 次の import ステートメントを追加します。
@import GoogleMaps;
- API キーを使用して、
application:didFinishLaunchingWithOptions:
メソッドに[GMSServices provideAPIKey:@"YOUR_API_KEY"];
を追加します。 - Places API も使用している場合は、
[GMSPlacesClient provideAPIKey:@"YOUR_API_KEY"];
のようにキーを再度追加します。
ステップ 4(省略可): Metal レンダリング フレームワークの使用を有効にする
Maps SDK for iOS では、Apple の Metal レンダリング フレームワークの使用を選択できます。アプリで Metal レンダラを試すには、マップビューを作成する前に、Objective-C では [GMSServices
setMetalRendererEnabled:YES]
を、Swift では GMSServices.setMetalRendererEnabled(true)
を呼び出します。
SDK を手動でインストールする場合は、Xcode に Metal.framework
を追加する必要もあります。
ステップ 5: 地図を追加する
既存の ViewController
にシンプルな地図を追加する方法を以下のコードに示します。
アプリのデフォルトの
ViewController
にメソッドを追加または更新して、GMSMapView
のインスタンスを作成して初期化します。Swift
/* * Copyright 2020 Google Inc. All rights reserved. * * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ import UIKit import GoogleMaps class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. // Create a GMSCameraPosition that tells the map to display the // coordinate -33.86,151.20 at zoom level 6. let camera = GMSCameraPosition.camera(withLatitude: -33.86, longitude: 151.20, zoom: 6.0) let mapView = GMSMapView.map(withFrame: self.view.frame, camera: camera) self.view.addSubview(mapView) // Creates a marker in the center of the map. let marker = GMSMarker() marker.position = CLLocationCoordinate2D(latitude: -33.86, longitude: 151.20) marker.title = "Sydney" marker.snippet = "Australia" marker.map = mapView } }
Objective-C
/* * Copyright 2020 Google Inc. All rights reserved. * * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this * file except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF * ANY KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ #import "ViewController.h" #import <GoogleMaps/GoogleMaps.h> @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. // Create a GMSCameraPosition that tells the map to display the // coordinate -33.86,151.20 at zoom level 6. GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.86 longitude:151.20 zoom:6]; GMSMapView *mapView = [GMSMapView mapWithFrame:self.view.frame camera:camera]; mapView.myLocationEnabled = YES; [self.view addSubview:mapView]; // Creates a marker in the center of the map. GMSMarker *marker = [[GMSMarker alloc] init]; marker.position = CLLocationCoordinate2DMake(-33.86, 151.20); marker.title = @"Sydney"; marker.snippet = @"Australia"; marker.map = mapView; } @end
アプリを実行します。オーストラリアのシドニーにマーカーが 1 つ配置された地図が表示されます。マーカーは表示されるのに地図が表示されない場合は、API キーを指定していることを確認してください。
ステップ 6(省略可): API で使用する URL スキームを宣言する
iOS 9 と Xcode 7 以降では、アプリの Info.plist
ファイルでスキームを指定することで、開く URL スキームを宣言できます。ユーザーが地図上の Google ロゴをクリックすると、Maps SDK for iOS によって Google マップ モバイルアプリが開くため、アプリで関連する URL スキームを宣言できます。
Maps SDK for iOS で使用する URL スキームを宣言するには、次の行を Info.plist
に追加します。
<key>LSApplicationQueriesSchemes</key>
<array>
<string>googlechromes</string>
<string>comgooglemaps</string>
</array>
次のスクリーンショットは、Xcode でのユーザー インターフェースでの設定を示しています。
上記の宣言を行わないと、ユーザーが地図上の Google ロゴをタップしたときに、次のエラーが発生する可能性があります。
-canOpenURL: failed for URL: "comgooglemaps://" - error: "This app is not allowed to query for scheme comgooglemaps"
-canOpenURL: failed for URL: "googlechromes://" - error: "This app is not allowed to query for scheme googlechromes"
これらのエラーが発生しないようにするには、上記のように Info.plist
に宣言を追加します。
次のステップ
これで API キーと Xcode プロジェクトが用意できたので、アプリを作成して実行できます。Maps SDK for iOS には、開発を始めるのに役立つチュートリアルとサンプルアプリが豊富に用意されています。詳しくは以下をご覧ください。