SwiftでGoogle Map SDK使ってみた!

iOS版のGoogle Map SDK使ってみました。

とりあえずMapを表示するくらいなら思った以上に簡単でした。CocoaPodsでSDKが導入できるので楽ですね。

developers.google.com


導入は、以下のドキュメントを読めばわかりますが、Swiftで使うのにちょっとハマりました。

Getting Started   |   Google Maps SDK for iOS   |   Google Developers


Bridging-Header作って、AppDelegate.swiftAPI Keyを設定する

ドキュメント読むと、API Keyを設定する方法がObj-Cの方法しか載ってない気がするんですよね・・・。AppDelegate.mって書いてあるし・・・。

とりあえずCocoaPodsでSDKがダウンロードできたら、Bridging-Header作りました。

記事によっては作る必要ないって書いてありますが、あんまり詳しくないのでまあ作ってます。以下のような感じ。

#ifndef GoogleMapSample_GoogleMapSample_Bridging_Header_h
#define GoogleMapSample_GoogleMapSample_Bridging_Header_h

#import <GoogleMaps/GoogleMaps.h>

#endif


Bridging-Headerの作り方は、以下のQiitaとか見ればわかると思います。

qiita.com


んで、以下のような感じでAppDelegate.swiftAPI Keyの設定を書きます。

import UIKit
import GoogleMaps

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
....

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
        GMSServices.provideAPIKey("API Key")
        return true
    }

....
}


あとは、公式のドキュメントを順番に進めていけばGoogleMapが出ると思います。以下のような感じでMapが表示されます!

f:id:operando:20150728082755p:plain

地味なハマりポイント - API Key取得時のBundle Identifierの設定

ビルドして動いたんだけど、灰色の画面に赤いピンだけ表示される!みたいな状況に一度なりました。

Logを見てみると、Error Domain=com.google.HTTPStatus Code=400 "The operation couldn’t be completed. (com.google.HTTPStatus error 400.)"みたいなのが流れてる場合があります。

このパターンになったら、Google Developers ConsoleのAPI Keyの取得手順が間違っている可能性があります。

なので、再度API Keyの設定等を確認した方がいいです。

私はAPI Keyを取得する際に設定するBundle Identifierが実行しているプロジェクトと違っていて、この現象が起きました。

ドキュメント的には、Step 5: Get an iOS API keyの手順ですね。

まとめ

CocoaPodsでSDKも導入できるのは簡単でいいですね。

まだドキュメント内に書いてあるサンプルコードしか動かしてないですが、予想していたよりも入りが簡単で良かった。

まずMapが出ないとモチベーション保てないからね・・・。

これから地道にGoogle Map SDKいじっていきます。