対象:
Swift4

Google Mapsを起動する(Swift)

URLスキームを利用すれば、アプリからGoogle Maps for iOSアプリを起動して地図を表示することができる。やり方はとても簡単で、UIApplicationのopenメソッドにGoogle MapsのURLを渡すだけで良い。

        let url = URL(string: "comgooglemaps://")
        if UIApplication.shared.canOpenURL(url!) {
            //UIApplication.shared.openURL(url!)
            UIApplication.shared.open(url!)
        }

しかし、これだけで実行すると、Google Mapsが端末にインストール済みかどうかを確認するcanOpenURLメソッドを呼んだところで以下のようなエラーが出てしまうだろう。

SwiftInvokeSafari[341:95637] -canOpenURL: failed for URL: "comgooglemaps://" - error: "This app is not allowed to query for scheme comgooglemaps"

使用したいURLスキームは、予めInfo.plistのLSApplicationQueriesSchemesキーに配列として登録しておかなければならない。Google Mapsの場合は"comgooglemaps"を登録しておけば良い。ただし、canOpenURLメソッドによるGoogle Mapsのインストール確認を行わないのならばこの限りではない。

	LSApplicationQueriesSchemes
	
		comgooglemaps
	

例えば、地図上で千葉駅を検索したいらなら、qパラメータで"千葉駅"を指定する。尚、マルチバイト文字を含む場合はURLエンコードする必要がある。

        let encoded = "comgooglemaps://?q=千葉駅".addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed)!
        let url = URL(string: encoded)
        if UIApplication.shared.canOpenURL(url!) {
            UIApplication.shared.open(url!)
        }

アプリから起動したGoogle Mapsの左上には、アプリ名と矢印が表示され、起動元のアプリに戻ることも可能となっている。


関連項目として、この方法でChromeの起動も可能なので、必要であればこちらを参照していただきたい。

(2018/01/19)

新着情報
【オープンソースソフトウェア環境構築】Amazon S3にアクセスするSparkアプリケーション
【iOS Objective-C, Swift Tips】ジオコーディング(Swift)
【iOS Objective-C, Swift Tips】HTTP GETとPOST(Swift)

Copyright© 2004-2018 モバイル開発系(K) All rights reserved.
[Home]