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 には、
iOS 向け Google マップ アプリを起動して特定の機能を実行する
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 の例です。
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 仕様に準拠しています。このスキームで iOS 向け Google マップアプリを呼び出すと、アプリの画面上部にボタンが表示されます。このボタンをタップすると、指定した URL へのコールバックが発行されます。
comgooglemaps-x-callback://
へのリクエストは次の形式にする必要があります。
comgooglemaps-x-callback://?parameters
パラメータ
x コールバック URL スキームは、comgooglemaps://
URL スキームと同じパラメータを受け入れます。どちらのパラメータも必須です。
x-source
- x コールバック リクエストを送信するアプリケーションの名前。短めの名前を指定することが推奨されています。x-success
- 完了時に呼び出す URL。多くの場合、これは独自のアプリの URL スキームであり、ユーザーは元のアプリに戻ることができます。
コールバック URL に応答できるように、アプリは独自の URL スキームを登録する必要があります。
- コールバック リクエストに応答できる URL スキームを、アプリケーションが登録していることを確認します。
x-source
パラメータにコールバック ボタンのラベルを渡します。- コールバック URL を
x-success
パラメータに渡します。
次の例では、iOS 向け Google マップ アプリを起動し、ニューヨークを中心とした地図を表示します。また、「SourceApp」というラベルのボタンも表示されます。
[ソースアプリ] ボタンがクリックされると、iOS 向け Google マップ アプリは、架空の 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 コールバック 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」というラベルのボタンも表示されます。[ソースアプリ] ボタンがクリックされると、iOS 向け Google マップ アプリは、架空の 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