iOS 9 以降を搭載したデバイスでは、Google マップの URL がある場合に、ユニバーサル リンクを使用して Google マップを起動できます。
Google マップ URL スキームを使用すると、Google Maps for iOS アプリを起動して、検索の実行、ルート案内リクエスト、マップ ビューの表示などを行うことができます。Google マップを起動すると、リクエストの一部としてバンドル識別子が自動的に送信されます。
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://
- この 2 つのスキームを使用すると、Google Maps for iOS アプリを起動して次のいずれかのアクションを行うことができます。- 位置とズーム レベルを指定して地図を表示する。
- 位置やスポットを検索し、地図上に表示する。
- ある地点から別の地点への経路を要求する。ルート案内は、車、徒歩、自転車、公共交通機関の 4 つの移動モードで返されます。
- アプリにナビゲーションを追加します。
- iOS 8 では、
comgooglemaps-x-callback://
を使用してアプリが終了した際にコールバックを実行します。通常、コールバックは、Google Maps for iOS を開いた元のアプリにユーザーを戻すために使用します。iOS 9 では、システムによりステータスバーの左隅に「戻る」リンクが提供されます。
comgooglemapsurl://
- このスキームを使用すると、デスクトップの Google マップ ウェブサイトから派生した URL によって Google Maps for iOS アプリを開くことができます。これによって、単に Google マップ ウェブサイトを読み込むのではなく、ユーザーにネイティブのモバイル アプリの操作性を提供できるようになります。- 元の URL として、
maps.google.com
またはgoogle.com/maps
を利用できます。またcom
の代わりに有効なトップレベルの国ドメインを指定することもできます。リダイレクト用の URL であるgoo.gl/maps
を渡すこともできます。 comgooglemapsurl://
URL スキームを使用してx-source
パラメータとx-success
パラメータを使用してコールバックを実行できます。
- 元の URL として、
iOS 版 Google マップ アプリの起動と特定の機能の実行
Google Maps for iOS アプリを起動するには、次の形式で URL スキームを使用します。その際に、サポートされている機能を実行することもできます。
comgooglemaps://?parameters
または
comgooglemaps-x-callback://?parameters
パラメータについては、本書で後ほど解説します。
デバイスで Google Maps アプリが使用できるかの確認
アプリケーションでユーザーに 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 スキームは Google Maps for iOS アプリを起動します。
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 のニューヨーク チェルシー オフィスからジョン・F・ケネディ国際空港までの交通機関でのルートを表示しています。
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 仕様に準拠しています。このスキームで Google Maps for iOS アプリを呼び出すと、アプリの画面の上部にボタンが表示されます。このボタンをタップすると、指定した 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
パラメータにコールバック ボタンのラベルを渡します。x-success
パラメータにコールバック URL を渡します。
次の例では、Google Maps 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 スキームの場合と同様に、デバイス上で Google Maps for iOS アプリが利用可能であることと、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 マップを起動すると、ユーザーはアプリからターンバイターンのナビゲーションに簡単にアクセスできます。comgooglemaps://
または comgooglemaps-x-callback://
の URL スキームを使用できます。
次のコード スニペットは、comgooglemaps-x-callback://
スキームを使用してルート案内リクエストを行い、ユーザーの準備が整った際に元のアプリに戻る方法を示しています。このコードは次の処理を行います。
comgooglemaps-x-callback://
URL スキームが利用可能であることを確認します。- Google Maps for iOS アプリを起動し、ニューヨーク市のジョン・F・ケネディ国際空港までのルート案内リクエストを行います。ユーザーの現在地からのルート案内リクエストを行うために、出発地は指定していません。
- 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 からの Google Maps for iOS アプリの起動
アプリがウェブページ上やデータベース内にある既存の Google マップの URL にアクセスできる場合、このスキームを使用して Google Maps for iOS アプリで 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 Maps アプリの利用可否の確認
最初に、デバイス上で Google Maps for iOS アプリが利用可能であることと、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-callback を指定した東京タワーへのルート案内リクエストの例:
元の 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
次の例では、Google Maps for iOS アプリを起動して、元の Google マップの URL(上記)で指定した東京タワーへのルートを表示します。アプリには、「SourceApp」というラベルのボタンも表示されます。「SourceApp」ボタンがクリックされると、Google Maps 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