読者です 読者をやめる 読者になる 読者になる

sos の 作業メモ

プログラミングや英会話学習、マイルや旅行、日常生活など。最近はWebFormなASP.NETのお守りがお仕事です。

日々の生活にhappyをプラスする|ハピタス Gポイント

その2: Getting Started (Google Maps SDK for iOS)

前回の続き

Getting Started

まずはSDKAPI Keyを入手

Getting the Google Maps SDK for iOS

サイトから最新版のSDKのzipをダウンロードし、 ファイルを適当な場所に解凍する。(GoogleMaps-iOS-1.4.2フォルダができる)

  • Google Maps Mobile SDK for Businessのユーザーは、このSDKではなく、Google Maps Mobile SDK for Business static libraryをダウンロードして設定すること。

The Google Maps API Key

地図を表示するためには API Keyと呼ばれるものが必要。

API Keyは無料であり、アプリからMaps APIを呼び出すために使うもの。 ユーザー数の利用制限はない。 Keyの取得には、GoogleAPI Consoleで アプリのBundle IDを入力する必要がある。 API Keyを取得したら、それをAppDelegateへ追加する必要がある。

  • Google Maps Mobile SDK for Businessのユーザーは、追加のSDKを有効にしなければならない

Obtaining an API Key

API KeyはGoogle APIs Consoleから取得する

  • 左のpaneでServicesを選び、"Google Maps SDK for iOS"をonにする
  • 左のpaneでAPI Accessを選び、"Create new iOS key" ボタンを押す
  • 一つ、もしくは複数のBundle ID(com.example.MyAppみたいなやつ)を入力する

これでAPI Keyが生成される。新しいアプリを作るたびにこの作業が必要となる。

Adding the Google Maps SDK for iOS to your project

SDKは 静的なframeworkとresource bundleが含まれている。

アプリに地図を追加する前に、このframeworkをprojectに追加し、Xcodeのbuild settingを設定する。(これらの手順は新規プロジェクト作成時の説明で、既存のものの場合は不要かもしれない)

  1. Xcodeを起動し、既存のprojectを開くか、新規のprojectを作成

    新規の場合は Single View Applicationで、Storyboradsをoff、ARCをonにしたものにすること

  2. SDKを解凍したフォルダの中に"GoogleMaps.framework"というフォルダがあるので、それをXcodeのProjectNavigatorのFrameworksの中にドラッグする。

    ダイアログが表示されるので、"Copy items into destination group's folder"にチェックを入れてFinishを押す

  3. ProjectNavigatorに追加されたGoogleMaps.frameworkを右クリックし、"Show In Finder"で開く

  4. Resoucesフォルダの下に GoogleMaps.bundlというファイルがあるので、2の手順と同じように、ProjectNavigatorのFrameworksの中にドラッグ。これもCopy〜にチェックを入れてFinish。
  5. ProjectNavigatorで一番上のProjectをクリックして、アプリケーションのTARGETSで対象のアプリを選択する。
  6. Build Phases のタブを開き、 Link Binary with Librariesで以下のframeworkを追加する

    • AVFoundation.framework
    • CoreData.framework
    • CoreLocation.framework
    • CoreText.framework
    • GLKit.framework
    • ImageIO.framework
    • libc++.dylib
    • libicucore.dylib
    • libz.dylib
    • OpenGLES.framework
    • QuartzCore.framework
    • SystemConfiguration.framework
  7. Build Settings タブを選び、設定を書き換える

    • Architecturesの値を armv7に変更
    • Other Linker Flags に -ObjCを追加
  8. AppDelegate.mにAPI keyを書き込む

    GoogleMaps.hをimportし、application:didFinishLaunchingWithOptions:でGMSServicesを初期化する

    [GMSServices provideAPIKey:@"API_KEY"];

Upgrade from an earlier version

既存のプロジェクトを最新版のSDKにアップグレードする方法は以下

Project Navigatorで、以前のフレームワークを最新のフレームワークに入れ替える。

必要ならアップグレードされたものを変更する。リリースノートで変更が必要なものは解説されている。

Product > Clean and then Product > Build メニューを選んで、プロジェクトをリビルドする。

Add a Map

API KeyをAddDelegateに記載し、ViewControllerに simpleな mapを追加しましょう。

AppDelegate.m

imoprtとapplication didFinishLaunchingWithOptions:にコードを一行追加

#import <GoogleMaps/GoogleMaps.h>

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    [GMSServices provideAPIKey:@"hogehogehogehoge"]; // 自分のAPI Keyに書き換えること
    self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

ViewController.m

importと、loadViewを追加

#import <GoogleMaps/GoogleMaps.h>

- (void)loadView {
    GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:34.65 longitude:135 zoom:6];
    mapView = [GMSMapView mapWithFrame:CGRectZero camera:camera];
    mapView.myLocationEnabled = YES;
    self.view = mapView;

    GMSMarker* marker = [[GMSMarker alloc] init];
    marker.position = CLLocationCoordinate2DMake(34.65, 135);
    marker.title = @"Hyogo";
    marker.snippet = @"akashi";
    marker.map = mapView;
}

実行すると、日本の基準点である明石にマーカーをたてて中心表示した地図が表示されるはずです。(地図がでない場合はAPI Keyを確認してください)

この部分は元のページとちょっとコードを変えています(^^;


Objective-Cのリハビリを兼ねて Getting Startedが完了。Android Studioに慣れ切った身体には、久しぶりのXcodeはかなり使いにくいです。AppCode試してみようかな…

次回へ続く