iOSアプリでGoogleMapを使う
- iOS
- 
                         2017-03-02                                                                                                 - 更新:2018-02-15 2017-03-02                                                                                                 - 更新:2018-02-15
地図を使ったiOSアプリを開発するにあたって、標準マップとGoogleMapのどちらを使おうかと調べてみたら、以下のサイトで違いが紹介されていました。
http://web-terminal.blogspot.jp/2013/06/google-maps-sdk-for-iosmapkit.html
マーカーの扱いの違いで私はGoogleMapを使うことにしました。
まずは、表示できるところまでやってみようということで、その流れをご紹介したいと思います。
Xcodeのバージョンが6.3以降であることを確認します。※17/03/02時点
CocoaPodsという依存関係を管理するためのオープンソースのツールが必要になりますので入手します。
ターミナルで以下のコマンドを実行します。
sudo gem install cocoapods
CocoaPodsを使ってプロジェクトにGoogle Maps SDK for iOSを組み込みます。
プロジェクトのディレクトリ(.xcodeprojファイルがあるところ)に「Podfile」という名前のファイルを作成します。
ターミナルでプロジェクトのディレクトリに移動し以下を実行
cd <path-to-project> vim Podfile
以下の内容を記述しファイルを保存します。
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.1' pod 'GoogleMaps'
pod installコマンドを実行します。
Podspecで指定されているAPIが、その依存関係(存在する場合)とともにインストールされます。
pod install
終わりましたが「[!] The dependency ‘GoogleMaps’ is not used any concrete target.」とエラーが発生しているようです。

Googleの公式ガイドを見ながらやっていたのですが、情報が古かったようです。
Podfileの書き方が変更になったらしくやり方が変わっていました。
参考URL:http://yanamura.hatenablog.com/entry/2016/06/13/155927
もう一度やり直し
先ほどのPodfileとPodsディレクトリを削除し、ターミナルで以下のコマンドを実行します。
pod init
Podfileが出来上がるのでvimで編集します。

# Pods for [project name]
の後に以下を追記します。
pod 'GoogleMaps'
保存したら
pod setup
pod install

Pod installation complete!と表示されれば成功です。
終了したらプロジェクトのディレクトリに「Pods」ディレクトリ、「Podfile.lock」「[project name].xcworkspace」ファイルが出来上がります。
今後は.xcworkspaceのファイルを開いて開発することになります。
Google Developers Console で必要な API を有効にする
Google Developers Consoleでプロジェクトを作成し、Google Maps SDK for iOSとGoogle Places API for iOSをアクティベートします。
以下のリンクから両方のAPIを自動的にアクティベートすることができます。
両方のAPIを自動的にアクティベート
流れに沿っていくとそのままAPIキーが発行されます。
ここまでが事前準備となります。
Xcodeでプロジェクトを開き、「AppDelegate.swift」を編集します。
import UIKit
import GoogleMaps;  // 追記
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?
    let cGoogleMapsAPIKey = "[APIキー]"  // 追記
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
        [UIApplicationLaunchOptionKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        // Google Mapsの初期設定
        GMSServices.provideAPIKey(cGoogleMapsAPIKey) // 追記
        return true
    }
    .
    .
    .
ViewControllerにGoogleMapを表示させましょう。
import UIKit
import GoogleMaps
class ViewController: UIViewController {
    var googleMap : GMSMapView!
    
    let latitude: CLLocationDegrees = 34.687322
    let longitude: CLLocationDegrees = 135.526195
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        // ズームレベル
        let zoom: Float = 10
        // カメラを生成
        let camera: GMSCameraPosition = GMSCameraPosition.camera(withLatitude: latitude, longitude: longitude, zoom: zoom)
        // MapViewを生成
        googleMap = GMSMapView(frame: CGRect(x: 0, y: 0, width: self.view.bounds.width, height: self.view.bounds.height))
        // MapViewにカメラを追加
        googleMap.camera = camera
        // マーカーの生成
        let marker: GMSMarker = GMSMarker()
        marker.position = CLLocationCoordinate2DMake(latitude, longitude)
        marker.map = googleMap
        // viewにMapViewを追加
        self.view.addSubview(googleMap)
    }
    .
    .
    .
参考URL:http://qiita.com/kobaboy/items/83164707c103ca0ce5b6
シミュレーターで実行、無事表示することができました。

ちなみに実機でも問題なく表示することができました。
Xcode: 8.2.1
Swift: 3.1
OS: Sierra 10.12
 
                                            












 Fedoraインストール時にごちゃごちゃになったHDの整理の... (25/02/14)
 Fedoraインストール時にごちゃごちゃになったHDの整理の... (25/02/14)