iOS 向け Google マップ URL スキーム

iOS 9 以降を搭載したデバイスでは、Google マップの URL がある場合に、ユニバーサル リンクを使用して Google マップを起動できます。

Google マップ URL スキームを使用すると、Google Maps for iOS アプリを起動して、検索の実行、ルート案内リクエスト、マップ ビューの表示などを行うことができます。Google マップを起動すると、リクエストの一部としてバンドル識別子が自動的に送信されます。

Google マップ URL スキームを使用するために、Google API キーは必要ありません。

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:// を使用して、アプリの完了時にコールバックを発行します。通常、コールバックは、Google Maps for iOS を開いた元のアプリにユーザーを戻すために使用します。iOS 9 では、システムによりステータスバーの左隅に「戻る」リンクが提供されます。
  • comgooglemapsurl:// - このスキームを使用すると、パソコン版の Google マップ ウェブサイトから取得した URL を使用して、iOS 向け Google マップ アプリを起動できます。つまり、Google マップ ウェブサイトを読み込むのではなく、ネイティブのモバイル エクスペリエンスを提供できます。

    • 元の URL として、maps.google.com または google.com/maps を利用できます。また com の代わりに有効なトップレベルの国ドメインを指定することもできます。リダイレクト用の URL である goo.gl/maps を渡すこともできます。
    • comgooglemapsurl:// URL スキームを使用して x-source パラメータと x-success パラメータを使用してコールバックを実行できます。

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 スキームは Google Maps for iOS アプリを起動します。

  • center: 地図のビューポートの中心点です。latitude,longitude のカンマ区切りの文字列としてフォーマットされます。
  • mapmode: 表示する地図の種類を設定します。standard または streetview に設定できます。指定しない場合は、現在のアプリケーション設定が使用されます。
  • views: 特定のビューのオンとオフを切り替えます。satellitetraffictransit のいずれかに設定できます。複数の値はカンマ区切りで設定できます。値なしでこのパラメータを指定すると、すべてのビューがクリアされます。
  • 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

ビューポート位置を指定して検索を実行するには、以下のスキームを使用します。

パラメータ

Google 検索では、地図の表示に使用されるパラメータに加えて、q パラメータがサポートされています。

  • q: 検索のクエリ文字列。

次の URL の例では、指定された場所の周りで「Pizza」を検索しています。

comgooglemaps://?q=Pizza&center=37.759748,-122.427135

近辺のピザ

他にも次のような例があります。

comgooglemaps://?q=Steamers+Lane+Santa+Cruz,+CA&center=37.782652,-122.410126&views=satellite,traffic&zoom=15
comgooglemaps://?q=Google+Japan,+Minato,+Tokyo,+Japan&center=35.660888,139.73073&zoom=15&views=transit

ルートの表示

このスキームを使用すると、2 つの地点間のルート案内リクエストを表示することができます。その際に、移動モードを指定することもできます。

パラメータ

  • saddr: ルート検索の始点を設定します。緯度、経度、またはクエリ形式の住所を指定できます。これが複数の結果を返すクエリ文字列である場合は、最初の結果が選択されます。値に何も指定されていない場合は、ユーザーの現在地が使用されます。
  • daddr: ルート検索の目的地を設定します。形式と動作は saddr と同じです。
  • directionsmode: 移動手段。drivingtransitbicyclingwalking のいずれかに設定できます。

次の 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&center=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&center=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 コールバック リクエストを送信するアプリケーションの名前。短めの名前を指定することが推奨されています。
  • x-success - 完了時に呼び出す URL。多くの場合、これは呼び出し元のアプリの URL スキームです。そうすることによって、ユーザーが元のアプリケーションに戻れるようになります。

なお、アプリがコールバック URL に応答できるように、アプリは独自の URL スキームを登録する必要があります。

  1. コールバック リクエストに応答できる URL スキームがアプリケーションで登録済みであることを確認します。
  2. x-source パラメータにコールバック ボタンのラベルを渡します。
  3. x-success パラメータでコールバック URL を渡します。

次の例では、iOS 向け Google マップ アプリが起動され、ニューヨークを中心とした地図が表示されます。アプリには、「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&center=37.759748,-122.427135
   &x-success=sourceapp://?resume=true
   &x-source=Nom+Nom

アプリにナビゲーションを追加する

ルート リクエストを使用して iOS 向け Google マップ アプリを起動すると、アプリからターンバイターン方式のナビにアクセスする簡単な方法となります。comgooglemaps:// または comgooglemaps-x-callback:// の URL スキームを使用できます。

次のコード スニペットは、comgooglemaps-x-callback:// スキームを使用してルート案内リクエストを行い、ユーザーの準備が整った際に元のアプリに戻る方法を示しています。このコードは次の処理を行います。

  1. comgooglemaps-x-callback:// URL スキームが利用可能であることを確認します。
  2. iOS 向け Google マップ アプリを起動して、ニューヨーク市の JFK 空港までのルートをリクエストします。ユーザーの現在地からのルート案内リクエストを行うために、出発地は指定していません。
  3. iOS 向け Google マップ アプリに「AirApp」というボタンを追加します。ボタンのラベルは x-source パラメータで定義します。
  4. ユーザーが戻るボタンをクリックすると、仮の 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 を開くことができるため、ネイティブ ユーザーに最適なエクスペリエンスを提供できます。

  1. http:// または https:// スキームを comgooglemapsurl:// に置き換えます。
  2. コールバックを使用する場合は、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 マップ アプリをご利用いただけるかどうか確認しています

最初に、デバイス上で 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] ボタンをクリックすると、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