「 Android 向け Google マップ アプリ では、Google マップをディスプレイとして起動できるインテントがいくつか公開されています。 さまざまなモードがあります目標 に地図を埋め込む場合は、Google Maps Android API スタートガイド
概要
インテントを使用すると、簡単なアクションを記述することで別のアプリでアクティビティを開始できます。
「地図を表示して」や「目的地へのルートを表示」など、
空港など)を
Intent
渡されます。「
Android 向け Google マップ アプリ
複数のインテントがサポートされており、Google マップ アプリを起動できます。
次の 4 つのアクションのいずれかを行います
- 位置とズーム レベルを指定して地図を表示する。
- 位置やスポットを検索し、地図上に表示する。
- ある地点から別の地点への経路を要求する。ルートを返すことができます 車、徒歩、自転車の 3 つの移動手段です
- 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
を作成したら、関連する
使用できます。一般的な方法は、Intent
を
startActivity()
メソッドを呼び出します。必要なアプリ(この場合は 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
パラメータ
latitude
とlongitude
は、地図の中心点を設定します。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-3label
を使用すると、地図上で識別された場所にカスタムラベルを設定できます。「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 を使用します。panoid
とcbll
の両方が指定されています。パノラマ 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)