IntentでGoogle Mapアプリに飛ばしますが、出発地と目的地を指定して、その経路をGoogle Map上に表示させることができます。
下は、東京駅からスカイツリーまでを電車で移動するケースです。
Android Studio
2021.2.1
2021.2.1
Intent の設定
こちらも以下と同じように、API key 無しでIntentを使って簡単に Google Map を呼び出して地図を表示させる方法です。
API key 無しでIntentを使って簡単に Google Map を呼び出して地図を表示させる方法です。
GoogleMapを...
Intent.ACTION_VIEW
com.google.android.maps.MapsActivity
を使います
1 2 3 4 5 6 7 8 |
val intent = Intent() intent.action = Intent.ACTION_VIEW intent.setClassName( "com.google.android.apps.maps", "com.google.android.maps.MapsActivity" ) intent.data = Uri.parse(str) startActivity(intent) |
Uri.parseの引数に
1 |
http://maps.google.com/maps?saddr=出発地&daddr=目的地&dirflg=交通手段 |
を入れます。
test0:東京駅からスカイツリー
test1:新宿御苑から東京駅
2ケースを試してみましょう。
MaincActivity.kt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
//package your.app.name import android.content.Intent import android.net.Uri import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import java.util.* class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // setContentView(R.layout.activity_main) //test0() test1() } // 地名を入れて経路を検索 private fun test0() { // 起点 val start = "東京駅" // 目的地 val destination = "スカイツリー" // 移動手段:電車:r, 車:d, 歩き:w val dir = arrayOf("r", "d", "w") val intent = Intent() intent.action = Intent.ACTION_VIEW intent.setClassName( "com.google.android.apps.maps", "com.google.android.maps.MapsActivity" ) // 出発地, 目的地, 交通手段 val str: String = java.lang.String.format( Locale.US, "http://maps.google.com/maps?saddr=%s&daddr=%s&dirflg=%s", start, destination, dir[1] ) intent.data = Uri.parse(str) startActivity(intent) } // 緯度経度を入れて経路を検索 private fun test1() { // 起点の緯度、経度 val srcLat = "35.681382" val srcLtg = "139.7660842" // 目的地の緯度経度 val desLat = "35.684752" val desLtg = "139.707937" val intent = Intent() intent.action = Intent.ACTION_VIEW intent.setClassName( "com.google.android.apps.maps", "com.google.android.maps.MapsActivity" ) // 起点の緯度,経度, 目的地の緯度,経度 val str: String = java.lang.String.format( Locale.US, "http://maps.google.com/maps?saddr=%s,%s&daddr=%s,%s", srcLat, srcLtg, desLat, desLtg ) intent.data = Uri.parse(str) startActivity(intent) } } |
アプリを起動すると
目的地までのルート候補を
指定した電車を使ったケースで
リストアップします
その候補を選ぶと経路が表示されます
test1()のケースのように
出発地、目的地を緯度経度で指定することもできます
関連ページ:
- Intentで Google Map の表示
- Intentで Google Map に移動経路の表示
References:
一般的なインテント
インテントとインテント フィルタ