Android 向け Google マップ インテント

Android 向け Google マップ アプリ では、Google マップをディスプレイとして起動できるインテントがいくつか公開されています。 さまざまなモードがあります目標 に地図を埋め込む場合は、Google Maps Android API スタートガイド

概要

インテントを使用すると、簡単なアクションを記述することで別のアプリでアクティビティを開始できます。 「地図を表示して」や「目的地へのルートを表示」など、 空港など)を Intent 渡されます。「 Android 向け Google マップ アプリ 複数のインテントがサポートされており、Google マップ アプリを起動できます。 次の 4 つのアクションのいずれかを行います

  1. 位置とズーム レベルを指定して地図を表示する。
  2. 位置やスポットを検索し、地図上に表示する。
  3. ある地点から別の地点への経路を要求する。ルートを返すことができます 車、徒歩、自転車の 3 つの移動手段です
  4. Google ストリートビューにパノラマ画像を表示します。

このページでは、Google マップ アプリで使用できるインテントについて説明します。 Android。インテントとインテント フィルタ、または Android に共通のインテント 詳細については、Android デベロッパー向けドキュメントをご覧ください。

インテント リクエスト

インテントを使用して Google マップを起動するには、まず Intent そのアクション、URI、パッケージを指定します。

  • アクション: Google マップのすべてのインテントは View アクションとして呼び出されます。 ACTION_VIEW
  • URI: Google マップのインテントでは、URL エンコードを使用して、 アクションの実行に使用するデータが示されます。
  • パッケージ: setPackage("com.google.android.apps.maps") を呼び出すと、 Android 向け Google マップ アプリでインテントが処理されることを確認します。もし 設定されていない場合、どのアプリが Intent。利用可能なアプリが複数ある場合は、どのアプリを使用するかを求められることがあります。 選択できます。

Intent を作成したら、関連する 使用できます。一般的な方法は、IntentstartActivity() メソッドを呼び出します。必要なアプリ(この場合は Google)がシステムによって起動されます。 Google マップで 対応する Activity

Java

// Create a Uri from an intent string. Use the result to create an Intent.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988");

// Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");

// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);

Kotlin

// Create a Uri from an intent string. Use the result to create an Intent.
val gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988")

// Create an Intent from gmmIntentUri. Set the action to ACTION_VIEW
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps")

// Attempt to start an activity that can handle the Intent
startActivity(mapIntent)

インテントに応答できるアプリをシステムが識別できない場合、そのアプリは クラッシュする可能性があります。このため、まず受信側のリクエストが アプリがインストールされます。

アプリがインテントを受信できるかどうかを確認するには、 resolveActivity(): Intent 渡されます。結果が null でない場合、少なくとも 1 つのアプリが 使用して安全に呼び出せます。 startActivity()。 結果が null の場合は、そのインテントを使用するべきではありません。可能であれば、 インテントを呼び出す機能を無効にする必要があります。

Java

if (mapIntent.resolveActivity(getPackageManager()) != null) {
  ...
}

Kotlin

mapIntent.resolveActivity(packageManager)?.let {
  ...
}

たとえば、サンフランシスコのマップを表示するには、次のコードを使用します。

Java

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
  startActivity(mapIntent);
}

Kotlin

val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
mapIntent.resolveActivity(packageManager)?.let {
  startActivity(mapIntent)
}

URL エンコードされたクエリ文字列

Google マップ インテントに渡すすべての文字列は、URI エンコードされている必要があります。たとえば 文字列 "1st &パイク、シアトル」1st%20%26%20Pike%2C%20Seattle になります。 文字列内の空白文字は、%20 にエンコードするか、プラス記号(+)に置き換えます。

android.net.Uri parse() メソッドを使用して文字列をエンコードできます。 例:

Java

Uri gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"));

Kotlin

val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4192?q=" + Uri.encode("1st & Pike, Seattle"))

マップを表示する

geo: インテントを使用して、指定した場所とズームレベルの地図を表示します。

geo:latitude,longitude?z=zoom

パラメータ

  • latitudelongitude は、地図の中心点を設定します。
  • z はオプションで、地図の初期ズームレベルを設定します。指定可能な値の範囲 0(全世界)~ 21(個々の建物)の範囲で指定できます。上限は、 選択した場所の地図データによって異なります。

Java

// Creates an Intent that will load a map of San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Creates an Intent that will load a map of San Francisco
val gmmIntentUri = Uri.parse("geo:37.7749,-122.4194")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

場所の検索

このインテントを使用して、指定したビューポートに検索クエリを表示します。リリースを クエリの結果が 1 つだけの場合、このインテントを使用して 特定の場所や住所(ランドマーク、お店やサービス、地理的特徴、 できます。

geo:latitude,longitude?q=query
geo:0,0?q=my+street+address
geo:0,0?q=latitude,longitude(label)

パラメータ

地図の表示に使用されるパラメータに加えて、Google 検索では 次のパラメータがあります。

  • q は、地図上でハイライト表示する場所を定義します。q パラメータは次のとおりです。 必須です。位置情報を場所または場所として指定できます。 名前または住所を入力します。文字列は URL エンコードにする必要があります。 たとえば“City Hall, New York, NY”のような住所をは、 東京都渋谷区渋谷 3-21-3

  • label を使用すると、地図上で識別された場所にカスタムラベルを設定できます。「 label は文字列として指定する必要があります。

一般的な検索キーワードを入力すると、Google マップが場所の検索を試みます。 検索条件に指定した緯度/経度の近くです。地域がない場合 指定すると、Google マップは付近のリスティングの検索を試みます。例:

Java

// Search for restaurants nearby
Uri gmmIntentUri = Uri.parse("geo:0,0?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

// Search for restaurants in San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Search for restaurants nearby
val gmmIntentUri = Uri.parse("geo:0,0?q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

// Search for restaurants in San Francisco
val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4194?q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

サンフランシスコのレストランの検索

検索結果に対してさらにバイアスをかけるには、ズームレベルとともにズーム パラメータ クエリ文字列に置き換えます。以下の例でズームを 10 にすると、ズームが 10 になります。 を使用して、付近ではなく都市レベルでレストランを検索できます。

Java

Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4194?z=10&q=restaurants")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

特定の住所を検索すると、その位置にピンが表示されます。

Java

Uri gmmIntentUri = Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("geo:0,0?q=1600 Amphitheatre Parkway, Mountain+View, California")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

上記の例では、緯度/経度が 0,0 に設定されていますが、住所をクエリとして渡しています 使用します。特定の場所を検索する場合は は不要です。正確な住所がわからない場合は、 座標を指定して検索の結果にバイアスをかけることができます。対象 例: 「Main Street」の住所を検索して過剰に多くの 表示されます。

Java

// Searching for 'Main Street' will return too many results
Uri gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street");

Kotlin

// Searching for 'Main Street' will return too many results
val gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street")

インテント URI に緯度/経度を追加すると、特定の値にバイアスをかけることができます。 region:

Java

// Searches for 'Main Street' near San Francisco
Uri gmmIntentUri = Uri.parse("geo:37.7749,-122.4194?q=101+main+street");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Searches for 'Main Street' near San Francisco
val gmmIntentUri =
  Uri.parse("geo:37.7749,-122.4194?q=101+main+street")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

検索で単一の値が返されることがわかっている場合は、 オプション ラベルです。ラベルは文字列として指定する必要があります。ラベルは 使用できます。ラベルは、q が値として指定されている場合にのみ使用できます。 緯度/経度座標。

Java

// Display a label at the location of Google's Sydney office
Uri gmmIntentUri = Uri.parse("geo:0,0?q=Google+Sydney@-33.8666,151.1957");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Display a label at the location of Google's Sydney office
val gmmIntentUri =
  Uri.parse("geo:0,0?q=-33.8666,151.1957(Google+Sydney)")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

番地や緯度/経度の代わりに、 既知の位置にピンを表示する plus code

Java

// Display the location of Google, San Francisco using a global plus code.
Uri gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX");
// Equivalently, define the same location using a local plus code
gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco");
// Construct and use the Intent as in the examples above

Kotlin

// Display the location of Google, San Francisco using a global plus code.
var gmmIntentUri = Uri.parse("http://plus.codes/849VQJQ5+XX")
// Equivalently, define the same location using a local plus code
gmmIntentUri = Uri.parse("https://plus.codes/QJQ5+XX,San%20Francisco")
// Construct and use the Intent as in the examples above

ターンバイターン方式ナビの起動

このインテントを使用して、ターンバイターン方式の経路案内を備えた Google マップ ナビを起動します 指定した住所または座標になります。ルートは常に ユーザーの現在地を確認できます

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude

パラメータ

  • q: ナビゲーション検索の終点を設定します。この値は 緯度と経度の座標、またはクエリ形式の住所。クエリの場合 複数の結果を返す場合、最初の結果は 選択済みです。

  • mode: 移動手段を設定します。Mode は省略可能で、 次のいずれかです。

    • 車で d(デフォルト)
    • b(自転車)
    • オートバイ: l
    • w(徒歩)
  • avoid は、ルートで回避すべき対象物を設定します。[回避] はオプションであり、 次のうち 1 つ以上を設定できます。

    • 有料道路 t
    • 高速道路(h
    • f(フェリー)

以下のIntentは、タロンガ動物園へのターンバイターン方式ナビをリクエストします シドニー オーストラリア:

Java

Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

タロンガ動物園までの経路

有料道路の利用やフェリーの利用を希望されない場合は、 回避しようと試みます。

Java

Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

少し運動したい場合は、代わりに自転車ルートをリクエストできます。

Java

Uri gmmIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&mode=b")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

原動機付自転車をご希望の場合は、 車が通行できない狭い道路や歩道が含まれます。以下の intent の戻り値 あるとします

Java

Uri gmmIntentUri = Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

val gmmIntentUri =
  Uri.parse("google.navigation:q=Connaught+Place,+New+Delhi,Delhi&mode=l")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

ストリートビュー パノラマの表示

google.streetview インテントを使用して Google ストリートビューを起動します。Google ストリートビュー 世界中の指定された場所からのパノラマビューを カバレッジ エリアユーザー提供の 360°写真 および ストリートビューのスペシャル コレクション も使用できます。

google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt
google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt

パラメータ

すべての google.streetview URI に cbll または panoid を含める必要があります。 パラメータを指定します。

  • cbll は、緯度と経度をカンマ区切りの値として指定できます。 (46.414382,10.013988).撮影したパノラマがアプリに表示されます。 この位置に最も近い場所に配置されますストリートビュー画像は定期的に 撮影される位置が若干異なる場合があります。 表示のたびに、実際の表示位置が 画像が更新されると自動的に表示されます。

  • panoid は特定のパノラマ ID です。Google マップでは、次の場合にパノラマ ID が使用されます。 panoidcbll の両方が指定されています。パノラマ ID は アプリの StreetViewPanoramaLocation オブジェクト。

  • cbp は、オブジェクトの初期の向きを調整するオプションのパラメータです。 カメラ。cbp パラメータは 5 つのカンマ区切り値を受け取ります。 オプションです。最も重要な値は 2 番目、4 番目、5 番目の値が 方位角、ズーム、傾斜をそれぞれ設定します。1 つ目と 3 つ目の 値はサポートされていないため、0 に設定する必要があります。

    • bearing: カメラのコンパス方位を時計回りの度数で示します あります。真北が 0、東が 90、南が 180、西が 270 です。値 bearing に渡され、ラップされます。すなわち 0°、360°、720° のすべての 同じ方向を指すようにしますbearing は 5 段階の 2 番目 使用できます。
    • zoom: カメラのズームレベルを設定します。デフォルトのズームレベルが設定されています。 0 です。ズームを 1 にすると拡大率が 2 倍になります。ズームは固定されています 0 から現在のパノラマの最大ズームレベル。 つまり、この範囲外の値は 範囲内に収まる最も近い極端な値を返します。たとえば、値が -1 の場合、 0 に設定されますZoom は、5 つのカンマ区切り値の値の 4 番目です。
    • tilt: カメラの角度(上下)を指定します。範囲は -90 0 から 90 まで指定します。90 を指定すると真下を向き、0 は水平を向きます。 正面を向くと -90 度になります。

次に、ストリートビュー インテントの使用例をいくつか示します。

Java

// Displays an image of the Swiss Alps
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=46.414382,10.013988");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

// Uses a PanoID to show an image from Maroubra beach in Sydney, Australia
Uri gmmIntentUri = Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

// Opens Street View between two Pyramids in Giza. The values passed to the
// cbp parameter will angle the camera slightly up, and towards the east.
Uri gmmIntentUri = Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, gmmIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);

Kotlin

// Displays an image of the Swiss Alps
val gmmIntentUri =
  Uri.parse("google.streetview:cbll=46.414382,10.013988")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

// Uses a PanoID to show an image from Maroubra beach in Sydney, Australia
val gmmIntentUri =
  Uri.parse("google.streetview:panoid=Iaa2JyfIggYAAAQfCZU9KQ")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

// Opens Street View between two Pyramids in Giza. The values passed to the
// cbp parameter will angle the camera slightly up, and towards the east.
val gmmIntentUri =
  Uri.parse("google.streetview:cbll=29.9774614,31.1329645&cbp=0,30,0,0,-15")
val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri)
mapIntent.setPackage("com.google.android.apps.maps")
startActivity(mapIntent)

ストリートビューのピラミッド