iOS 9 以降を搭載したデバイスでは、Google マップの URL があれば、ユニバーサル リンクを使用して Google マップを起動できます。
Google マップの URL スキームを使って、iOS 向け Google マップの起動、検索、ルート検索、地図表示の表示ができます。Google マップを起動すると、リクエストの一部としてバンドル ID が自動的に送信されます。
Google マップの URL スキームを使用するために Google API キーは必要ありません。
ユニバーサル リンクと Google マップ
iOS 向け Google マップは、iOS 9 以降を搭載したデバイスでユニバーサル リンクに対応しています。
URL が次の正規表現に一致し、デバイスが iOS 9 以降を搭載している場合は、openURL: メソッドを直接使用することをおすすめします。
(http(s?)://)?
((maps\.google\.{TLD}/)|
((www\.)?google\.{TLD}/maps/)|
(goo.gl/maps/))
.*
たとえば
Swift
UIApplication.shared.openURL(URL(string:"https://www.google.com/maps/@42.585444,13.007813,6z")!)
Objective-C
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"https://www.google.com/maps/@42.585444,13.007813,6z"]];
概要
URL スキームを使用すると、別の iOS アプリやウェブ アプリケーションからネイティブ iOS アプリを起動できます。起動されるアプリに渡される URL にオプションを設定できます。iOS 向け Google マップ アプリは、次の URL スキームをサポートしています。
comgooglemaps://
とcomgooglemaps-x-callback://
- これらのスキームでは、iOS 向け Google マップ アプリを起動して、次のアクションのいずれかを実行できます。- 位置とズーム レベルを指定して地図を表示する。
- 位置やスポットを検索し、地図上に表示する。
- ある地点から別の地点への経路を要求する。ルートは、車、徒歩、自転車、公共交通機関の 4 つの移動モードで返されます。
- アプリにナビゲーションを追加します。
- iOS 8 では、
comgooglemaps-x-callback://
を使用して、アプリが完了したらコールバックを発行します。多くの場合、コールバックは iOS 向け Google マップを開いた元のアプリにユーザーを返すために使用されます。iOS 9 では、ステータスバーの左隅に [戻る] リンクが自動的に表示されます。
comgooglemapsurl://
- このスキームでは、パソコン版の Google マップ ウェブサイトから取得した URL を使用して、iOS 向け Google マップ アプリを起動できます。つまり、Google マップ ウェブサイトを読み込むだけでなく、ネイティブなモバイル エクスペリエンスをユーザーに提供できます。- 元の URL には、
maps.google.com
かgoogle.com/maps
か、com
の代わりに有効なトップレベルの国ドメインを使用できます。goo.gl/maps
リダイレクト URL を渡すこともできます。 comgooglemapsurl://
URL スキームでx-source
パラメータとx-success
パラメータを使用して、コールバックを発行できます。
- 元の URL には、
Google Maps for iOS アプリを起動して特定の機能を実行する
iOS 向け Google マップ アプリを起動して、サポートされている機能のいずれかを実行するには、次の形式の URL スキームを使用します。
comgooglemaps://?parameters
または
comgooglemaps-x-callback://?parameters
パラメータについては、本書で後ほど解説します。
デバイスで Google マップ アプリが使用できるか確認しています
これらの URL のいずれかをアプリ内でユーザーに提示する前に、まずアプリがインストールされていることを確認する必要があります。次のコードを使用すると、URL スキームが利用可能かどうかを確認できます。
Swift
UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)
Objective-C
[[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"comgooglemaps://"]];
たとえば、ニューヨークのセントラル パークの地図を表示するには、次のコードを使用します。
Swift
if (UIApplication.shared.canOpenURL(URL(string:"comgooglemaps://")!)) {
UIApplication.shared.openURL(URL(string:
"comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic")!)
} else {
print("Can't use comgooglemaps://");
}
Objective-C
if ([[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"comgooglemaps://"]]) {
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic"]];
} else {
NSLog(@"Can't use comgooglemaps://");
}
マップを表示する
URL スキームを使って、指定したズームレベルと位置で地図を表示します。地図の上に他のビューをオーバーレイしたり、ストリートビュー画像を表示したりもできます。
パラメータ
以下に示すパラメータはすべて省略可能です。パラメータが設定されていない場合は、URL スキームによって iOS 向け Google マップ アプリが起動されます。
center
: 地図のビューポートの中心点です。latitude,longitude
のカンマ区切り文字列としてフォーマットされます。mapmode
: 表示する地図の種類を設定します。standard
またはstreetview
に設定できます。指定しない場合、現在のアプリケーション設定が使用されます。views
: 特定のビューをオンまたはオフにします。satellite
、traffic
、transit
のいずれかに設定できます。カンマで区切ることで複数の値を設定できます。このパラメータに値を指定しないと、すべてのビューがクリアされます。zoom
: 地図のズームレベルを指定します。
次の URL の例では、ニューヨーク市を中心とした地図をズーム 14 で、交通状況がオンの状態で表示します。
comgooglemaps://?center=40.765819,-73.975866&zoom=14&views=traffic
他にも次のような例があります。
comgooglemaps://?center=37.788463,-122.392545&zoom=12
comgooglemaps://?center=46.414382,10.013988&mapmode=streetview
検索
ビューポート位置を指定して検索を実行するには、以下のスキームを使用します。
パラメータ
検索では、地図の表示に使用するパラメータに加えて、q
パラメータがサポートされています。
q
: 検索のクエリ文字列。
次の URL の例では、指定した場所の周辺で「Pizza」を検索しています。
comgooglemaps://?q=Pizza¢er=37.759748,-122.427135
他にも次のような例があります。
comgooglemaps://?q=Steamers+Lane+Santa+Cruz,+CA¢er=37.782652,-122.410126&views=satellite,traffic&zoom=15
comgooglemaps://?q=Google+Japan,+Minato,+Tokyo,+Japan¢er=35.660888,139.73073&zoom=15&views=transit
ルートの表示
このスキームを使用して、2 地点間のルートをリクエストして表示します。その際に、移動モードを指定することもできます。
パラメータ
saddr
: ルート検索の始点を設定します。緯度、経度、またはクエリ形式の住所を指定できます。複数の結果を返すクエリ文字列の場合は、最初の結果が選択されます。値を空白のままにすると、ユーザーの現在地が使用されます。daddr
: ルート検索の終点を設定します。形式と動作はsaddr
と同じです。directionsmode
: 移動手段。driving
、transit
、bicycling
、walking
に設定できます。
次の URL の例では、Google ニューヨーク市と JFK 空港間の交通機関のルートを表示しています。
comgooglemaps://?saddr=Google+Inc,+8th+Avenue,+New+York,+NY&daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York&directionsmode=transit
他にも次のような例があります。
comgooglemaps://?saddr=Google,+1600+Amphitheatre+Parkway,+Mountain+View,+CA+94043&daddr=Google+Inc,+345+Spear+Street,+San+Francisco,+CA¢er=37.422185,-122.083898&zoom=10
comgooglemaps://?saddr=2025+Garcia+Ave,+Mountain+View,+CA,+USA&daddr=Google,+1600+Amphitheatre+Parkway,+Mountain+View,+CA,+United+States¢er=37.423725,-122.0877&directionsmode=walking&zoom=17
コールバック URL の指定
コールバック URL を指定する場合は、comgooglemaps-x-callback://
URL スキームを使用する必要があります。このスキームは x-callback-url の仕様に準拠しています。このスキームで iOS 向け Google マップ アプリを呼び出すと、アプリの画面上部にボタンが表示されます。このボタンをタップすると、指定した URL へのコールバックが発行されます。
comgooglemaps-x-callback://
へのリクエストは、次の形式にする必要があります。
comgooglemaps-x-callback://?parameters
パラメータ
x-callback URL スキームは、comgooglemaps://
URL スキームと同じパラメータを受け取りますが、次の追加パラメータがあります。どちらのパラメータも必須です。
x-source
- x-callback リクエストを送信するアプリケーションの名前。短めの名前を指定することが推奨されています。x-success
- 完了時に呼び出す URL。多くの場合、これはユーザーが元のアプリに戻れるように、独自のアプリの URL スキームになります。
コールバック URL に応答できるように、アプリは独自の URL スキームを登録する必要があります。
- コールバック リクエストに応答できる URL スキームをアプリケーションで登録していることを確認します。
x-source
パラメータにコールバック ボタンのラベルを渡します。- コールバック URL を
x-success
パラメータに渡します。
次の例では、Google マップ for iOS アプリを起動してニューヨークを中心とした地図を表示します。アプリには「SourceApp」というラベルのボタンも表示されます。「SourceApp」ボタンをクリックすると、Google Maps for iOS アプリは架空の URL スキーム sourceapp://?resume=true
へのコールバックを発行します。
comgooglemaps-x-callback://?center=40.765819,-73.975866&zoom=14
&x-success=sourceapp://?resume=true
&x-source=SourceApp
comgooglemaps://
URL スキームと同様に、まず iOS 向け Google マップ アプリがデバイスで利用可能で、x-callback URL スキームをサポートしていることを確認する必要があります。次のコードを使用すると、URL スキームが利用可能かどうかを確認できます。
Swift
UIApplication.shared.canOpenURL(URL(string:"comgooglemaps-x-callback://")!)
Objective-C
[[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"comgooglemaps-x-callback://"]];
これは、ユーザーがデザートを検索した後にアプリに戻れるようにする URL の例です。
comgooglemaps-x-callback://?q=dessert¢er=37.759748,-122.427135
&x-success=sourceapp://?resume=true
&x-source=Nom+Nom
アプリにナビゲーションを追加する
ルート案内リクエストを使って iOS 向け Google マップ アプリを起動すると、ユーザーはアプリからターンバイターン方式のナビに簡単にアクセスできるようになります。URL スキームは comgooglemaps://
または comgooglemaps-x-callback://
のどちらでも使用できます。
このコード スニペットは、comgooglemaps-x-callback://
スキームを使用してルートをリクエストし、ユーザーの準備が整ったらアプリに戻る方法を示しています。このコードでは次の処理が行われます。
comgooglemaps-x-callback://
URL スキームが使用可能であることを確認します。- iOS 向け Google マップ アプリを起動し、ニューヨーク市の JFK 空港までの経路をリクエストします。ユーザーの現在地からの経路をリクエストするには、出発地の住所を空白のままにします。
- iOS 向け Google マップ アプリに「AirApp」というボタンを追加します。ボタンラベルは
x-source
パラメータで定義されます。 - ユーザーが [戻る] ボタンをクリックしたときに、架空の URL スキーム
sourceapp://
を呼び出します。
Swift
let testURL = URL(string: "comgooglemaps-x-callback://")!
if UIApplication.shared.canOpenURL(testURL) {
let directionsRequest = "comgooglemaps-x-callback://" +
"?daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York" +
"&x-success=sourceapp://?resume=true&x-source=AirApp"
let directionsURL = URL(string: directionsRequest)!
UIApplication.shared.openURL(directionsURL)
} else {
NSLog("Can't use comgooglemaps-x-callback:// on this device.")
}
Objective-C
NSURL *testURL = [NSURL URLWithString:@"comgooglemaps-x-callback://"];
if ([[UIApplication sharedApplication] canOpenURL:testURL]) {
NSString *directionsRequest = @"comgooglemaps-x-callback://" +
@"?daddr=John+F.+Kennedy+International+Airport,+Van+Wyck+Expressway,+Jamaica,+New+York" +
@"&x-success=sourceapp://?resume=true&x-source=AirApp";
NSURL *directionsURL = [NSURL URLWithString:directionsRequest];
[[UIApplication sharedApplication] openURL:directionsURL];
} else {
NSLog(@"Can't use comgooglemaps-x-callback:// on this device.");
}
Google マップのパソコン用 URL から iOS 向け Google マップ アプリを起動する
アプリがウェブページやデータベースなどの既存の Google マップ URL にアクセスできる場合は、このスキームを使用して iOS 向け Google マップアプリで URL を開くことができます。これにより、ネイティブ エクスペリエンスをユーザーに提供できます。
http://
またはhttps://
スキームをcomgooglemapsurl://
に置き換えます。- コールバックを使用する場合は、
x-source
パラメータとx-success
パラメータを含めます。このスキームは x-callback-url の仕様に準拠しています。
サポートされている Google マップの URL 形式
comgooglemapsurl://
スキームは、この正規表現に一致する URL をサポートします。{TLD}
は、有効なトップレベルの国ドメインを指します。わかりやすくするために改行が挿入されています。
(http(s?)://)?
((maps\.google\.{TLD}/)|
((www\.)?google\.{TLD}/maps/)|
(goo.gl/maps/))
.*
Google マップ アプリが利用できるかどうかの確認
まず、iOS 向け Google マップ アプリがデバイスで利用可能で、URL スキームをサポートしていることを確認します。
Swift
UIApplication.shared.canOpenURL(URL(string:"comgooglemaps-x-callback://")!)
Objective-C
[[UIApplication sharedApplication] canOpenURL:
[NSURL URLWithString:@"comgooglemapsurl://"]];
例
一般的な Google マップの URL の例:
元の Google マップ URL:
https://www.google.com/maps/preview/@42.585444,13.007813,6z
使用する URL スキーム:
comgooglemapsurl://www.google.com/maps/preview/@42.585444,13.007813,6z
一般的な Google マップの URL の例:
元の Google マップ URL:
https://maps.google.com/?q=@37.3161,-122.1836
使用する URL スキーム:
comgooglemapsurl://maps.google.com/?q=@37.3161,-122.1836
x コールバックを使用して東京タワーへのルートをリクエストする例:
元の Google マップ URL:
http://maps.google.com/maps?f=d&daddr=Tokyo+Tower,+Tokyo,+Japan&sll=35.6586,139.7454&sspn=0.2,0.1&nav=1
次の例では、iOS 向け Google マップ アプリを起動して、元の Google マップの URL(上記)で指定された東京タワーまでの経路を地図に表示します。アプリには「SourceApp」というラベルのボタンも表示されます。「SourceApp」ボタンがクリックされると、Google マップ for iOS アプリは架空の URL スキーム sourceapp://?resume=true
へのコールバックを発行します。
comgooglemapsurl://maps.google.com/maps?f=d&daddr=Tokyo+Tower,+Tokyo,+Japan&sll=35.6586,139.7454&sspn=0.2,0.1&nav=1
&x-source=SourceApp
&x-success=sourceapp://?resume=true