Aplikasi Google Maps untuk Android mengekspos beberapa intent yang dapat Anda gunakan untuk meluncurkan Google Maps dalam mode tampilan, penelusuran, navigasi, atau Street View. Jika Anda ingin menyematan peta dalam aplikasi, lihat Panduan Memulai Google Maps Android API.
Ringkasan
Intent memungkinkan Anda memulai aktivitas di aplikasi lain dengan menjelaskan tindakan sederhana
yang ingin Anda lakukan (seperti "menampilkan peta" atau "menampilkan rute ke
bandara") dalam
objek
Intent
. Aplikasi Google Maps untuk Android mendukung beberapa intent yang berbeda, sehingga Anda dapat meluncurkan aplikasi Google Maps dan melakukan salah satu dari empat tindakan berikut:
- Menampilkan peta di lokasi dan dengan tingkat zoom yang ditetapkan.
- Menelusuri lokasi atau tempat, dan menampilkannya di peta.
- Meminta rute dari satu lokasi ke lokasi lainnya. Arah dapat ditampilkan untuk tiga moda transportasi: mengemudi, berjalan kaki, dan bersepeda.
- Menampilkan gambar panorama di Google Street View.
Halaman ini menjelaskan intent yang dapat Anda gunakan dengan aplikasi Google Maps untuk Android. Untuk informasi selengkapnya tentang Intent dan Filter Intent, atau Intent yang umum untuk platform Android, lihat dokumentasi developer Android.
Permintaan intent
Untuk meluncurkan Google Maps dengan intent, Anda harus terlebih dahulu membuat objek Intent
, yang menentukan tindakan, URI, dan paketnya.
- Action: Semua intent Google Maps dipanggil sebagai tindakan View —
ACTION_VIEW
. - URI: Intent Google Maps menggunakan URL yang dienkode yang menentukan tindakan yang diinginkan, beserta beberapa data yang akan digunakan untuk melakukan tindakan tersebut.
- Paket: Memanggil
setPackage("com.google.android.apps.maps")
akan memastikan bahwa aplikasi Google Maps untuk Android menangani Intent. Jika paket tidak ditetapkan, sistem akan menentukan aplikasi mana yang dapat menanganiIntent
. Jika tersedia beberapa aplikasi, pengguna mungkin akan ditanya aplikasi mana yang ingin mereka gunakan.
Setelah membuat Intent
, Anda dapat meminta sistem meluncurkan aplikasi
terkait dengan beberapa cara. Metode yang umum adalah meneruskan Intent
ke metode startActivity()
. Sistem akan meluncurkan aplikasi yang diperlukan — dalam hal ini Google Maps — dan memulai Activity
yang sesuai.
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)
Jika sistem tidak dapat mengidentifikasi aplikasi yang dapat merespons intent, aplikasi Anda dapat mengalami error. Oleh karena itu, Anda harus memverifikasi terlebih dahulu bahwa aplikasi penerima telah diinstal sebelum Anda menyajikan salah satu intent ini kepada pengguna.
Untuk memverifikasi bahwa aplikasi tersedia untuk menerima intent, panggil
resolveActivity()
pada
objek
Intent
Anda. Jika hasilnya bukan nol, setidaknya ada satu aplikasi yang dapat menangani
intent dan aman untuk memanggil
startActivity()
.
Jika hasilnya null
, Anda tidak boleh menggunakan intent tersebut dan, jika memungkinkan, Anda
harus menonaktifkan fitur yang memanggil intent tersebut.
Java
if (mapIntent.resolveActivity(getPackageManager()) != null) { ... }
Kotlin
mapIntent.resolveActivity(packageManager)?.let { ... }
Misalnya, untuk menampilkan peta San Francisco, Anda bisa menggunakan kode berikut:
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) }
String kueri yang dienkode URL
Semua string yang diteruskan ke Maksud Google Maps harus dienkode dalam URI. Misalnya,
string "1st & Pike, Seattle" akan menjadi 1st%20%26%20Pike%2C%20Seattle
.
Spasi dalam string ini bisa dienkode dengan %20 atau diganti dengan tanda tambah (+).
Anda dapat menggunakan metode android.net.Uri
parse()
untuk mengenkode string.
Contoh:
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"))
Menampilkan peta
Gunakan intent geo:
untuk menampilkan peta di lokasi dan tingkat zoom yang ditentukan.
geo:latitude,longitude?z=zoom
Parameter
latitude
danlongitude
menetapkan titik tengah peta.z
secara opsional menetapkan tingkat zoom awal peta. Nilai yang diterima berkisar dari 0 (seluruh dunia) hingga 21 (setiap bangunan). Batas atas dapat bervariasi, bergantung pada data peta yang tersedia di lokasi yang dipilih.
Contoh
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)
Menelusuri lokasi
Gunakan maksud ini untuk menampilkan kueri penelusuran dalam tampilan yang terlihat yang ditetapkan. Jika kueri memiliki satu hasil, Anda dapat menggunakan intent ini untuk menampilkan pin di tempat atau alamat tertentu, seperti penanda, bisnis, fitur geografis, atau kota.
geo:latitude,longitude?q=query geo:0,0?q=my+street+address geo:0,0?q=latitude,longitude(label)
Parameter
Selain parameter yang digunakan untuk menampilkan peta, Search mendukung parameter berikut:
q
menentukan tempat yang akan disorot di peta. Parameterq
diperlukan untuk semua permintaan Penelusuran. Parameter ini menerima lokasi sebagai nama tempat atau alamat. String harus dikonversi ke URL, sehingga alamat seperti "City Hall, New York, NY" harus dikonversi menjadi City+Hall,New+York,NY.label
memungkinkan Anda menyetel label khusus di tempat yang diidentifikasi di peta.label
harus ditentukan sebagai String.
Penelusuran kategoris
Jika Anda meneruskan istilah penelusuran umum, Google Maps akan mencoba menemukan lokasi dekat lintang/bujur yang Anda tetapkan dan cocok dengan kriteria Anda. Jika tidak ada lokasi yang ditentukan, Google Maps akan mencoba menemukan listingan terdekat. Contoh:
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)
Anda dapat lebih membiaskan hasil penelusuran dengan menentukan parameter zoom bersama dengan string kueri. Dalam contoh di bawah ini, menambahkan zoom 10 akan mencoba menemukan restoran di tingkat kota, bukan di sekitar.
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)
Penelusuran lokasi
Penelusuran alamat tertentu akan menampilkan pin di lokasi itu.
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)
Contoh di atas menetapkan lintang/bujur 0
,0
, tetapi meneruskan alamat sebagai string
kueri. Saat menelusuri lokasi yang sangat spesifik, lintang dan bujur
tidak diperlukan. Namun, jika tidak mengetahui alamat pastinya, Anda dapat
mencoba membelokkan hasil penelusuran dengan menentukan koordinat. Misalnya, melakukan penelusuran alamat untuk 'Jalan Utama' akan menampilkan terlalu banyak hasil.
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")
Menambahkan lintang/bujur ke URI intent akan mencondongkan hasilnya ke area tertentu:
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)
Jika tahu penelusuran Anda akan menampilkan satu nilai, Anda dapat meneruskan label opsional. Label harus ditetapkan sebagai String, dan akan muncul di bawah penanda peta. Perhatikan bahwa label hanya tersedia jika q
ditentukan sebagai koordinat lintang/bujur.
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)
Sebagai alternatif untuk alamat jalan atau lintang/bujur, Anda dapat menampilkan pin di lokasi yang diketahui menggunakan kode plus.
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
Meluncurkan navigasi belokan demi belokan
Gunakan intent ini untuk meluncurkan navigasi Google Maps dengan rute belokan demi belokan ke alamat atau koordinat yang ditentukan. Rute selalu diberikan dari lokasi pengguna saat ini.
google.navigation:q=a+street+address google.navigation:q=latitude,longitude
Parameter
q
: Menetapkan titik akhir untuk penelusuran navigasi. Nilai ini dapat berupa koordinat lintang, bujur, atau alamat berformat kueri. Jika string kueri menampilkan lebih dari satu hasil, hasil pertama akan dipilih.mode
menetapkan metode transportasi. Mode bersifat opsional, dan dapat disetel ke salah satu dari:d
untuk mengemudi (default)b
untuk bersepedal
untuk motorw
untuk berjalan
avoid
menetapkan fitur yang harus dihindari rute. Penghindaran bersifat opsional dan dapat disetel menjadi satu atau beberapa:t
untuk tolh
untuk jalan rayaf
untuk feri
Contoh
Intent
di bawah akan meminta navigasi belokan demi belokan ke Taronga Zoo, di
Sydney Australia:
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)
Jika Anda memilih untuk tidak membayar tol atau menumpang kapal feri, Anda dapat meminta rute yang mencoba menghindarinya.
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)
Jika lebih suka berolahraga, Anda bisa meminta rute sepeda.
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)
Jika Anda lebih suka menggunakan kendaraan roda dua bermotor, Anda dapat meminta agar rute
mencakup jalan sempit dan jalur yang tidak dapat dilalui mobil. intent
di bawah menampilkan rute di India.
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)
Menampilkan panorama Street View
Gunakan intent google.streetview
untuk meluncurkan Google Street View. Google Street View
menyediakan tampilan panorama dari lokasi yang dipilih di seluruh
area cakupan.
Fotosfer kontribusi pengguna,
dan
kumpulan khusus Street View
juga tersedia.
google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt
Parameter
Semua URI google.streetview
harus menyertakan parameter cbll
atau panoid
.
cbll
menerima lintang dan bujur sebagai nilai yang dipisahkan koma (46.414382,10.013988
). Aplikasi akan menampilkan panorama yang difoto paling dekat dengan lokasi ini. Karena gambar Street View diperbarui secara berkala, dan fotonya mungkin diambil dari posisi yang sedikit berbeda setiap kali, mungkin lokasi Anda akan bergeser ke panorama yang berbeda saat gambar diperbarui.panoid
adalah ID panorama tertentu. Google Maps akan menggunakan ID panorama jikapanoid
dancbll
ditentukan. ID Panorama tersedia untuk aplikasi Android dari objekStreetViewPanoramaLocation
.cbp
adalah parameter opsional yang menyesuaikan orientasi awal kamera. Parametercbp
menggunakan 5 nilai yang dipisahkan koma, semuanya bersifat opsional. Nilai yang paling signifikan adalah yang kedua, keempat, dan kelima yang masing-masing menetapkan bearing, zoom, dan kemiringan. Nilai pertama dan ketiga tidak didukung, dan harus disetel ke0
.bearing
: menunjukkan arah kompas kamera dalam derajat searah jarum jam dari Utara. Utara sebenarnya adalah 0, timur 90, selatan 180, dan barat 270. Nilai yang diteruskan ke bearing akan dibungkus; yaitu, 0°, 360°, dan 720° semuanya mengarah ke arah yang sama. Bearing didefinisikan sebagai nilai kedua dari lima nilai yang dipisahkan koma.zoom
: Menetapkan tingkat zoom kamera. Tingkat zoom default ditetapkan ke 0. Zoom 1 akan menggandakan pembesaran. Zoom ini akan dibulatkan antara 0 dan tingkat zoom maksimum untuk panorama saat ini. Artinya, nilai apa pun yang berada di luar rentang ini akan ditetapkan ke nilai ekstrem terdekat yang berada dalam rentang. Misalnya, nilai -1 akan ditetapkan ke 0. Zoom adalah nilai keempat dari lima nilai yang dipisahkan koma.tilt
: menentukan sudut, naik atau turun, pada kamera. Kisarannya adalah -90 sampai 0 hingga 90, dengan 90 lurus ke bawah, 0 di tengah horizon, dan -90 lurus ke atas.
Contoh
Di bawah ini adalah beberapa contoh penggunaan maksud Street View.
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)