Intent Google Maps untuk Android

Tujuan Aplikasi Google Maps untuk Android mengekspos beberapa intent yang bisa Anda gunakan untuk meluncurkan Google Maps dalam tampilan mode penelusuran, navigasi, atau Street View. Jika Anda ingin menyematkan peta di aplikasi Anda, lihat Google Maps Android API Panduan Memulai.

Ringkasan

Intent memungkinkan Anda memulai aktivitas di aplikasi lain dengan menjelaskan tindakan sederhana yang ingin Anda lakukan (seperti "menampilkan peta" atau "tampilkan rute ke bandara") dalam Intent . Tujuan Aplikasi Google Maps untuk Android mendukung beberapa intent yang berbeda, sehingga memungkinkan Anda meluncurkan aplikasi Google Maps dan lakukan salah satu dari empat tindakan berikut:

  1. Menampilkan peta di lokasi dan tingkat zoom yang ditetapkan.
  2. Menelusuri lokasi atau tempat, dan menampilkannya di peta.
  3. Meminta rute dari satu lokasi ke lokasi lain. Rute dapat ditampilkan untuk tiga moda transportasi: mengemudi, berjalan, bersepeda.
  4. Menampilkan gambar panorama di Google Street View.

Halaman ini menjelaskan intent yang bisa Anda gunakan dengan aplikasi Google Maps untuk Android. Untuk mengetahui informasi selengkapnya tentang Intent dan Intent Filter, atau Intent yang umum untuk Android platform ini, lihat dokumentasi developer Android.

Permintaan intent

Untuk meluncurkan Google Maps dengan intent, Anda harus terlebih dahulu membuat Intent , dengan menentukan aksi, URI dan paketnya.

  • Tindakan: Semua intent Google Maps disebut sebagai tindakan View — ACTION_VIEW.
  • URI: Intent Google Maps menggunakan dienkode URL yang menentukan tindakan, bersama dengan beberapa data yang akan digunakan untuk melakukan tindakan.
  • Paket: Memanggil setPackage("com.google.android.apps.maps") akan pastikan aplikasi Google Maps untuk Android menangani Intent. Jika paket tidak disetel, sistem akan menentukan aplikasi mana yang dapat menangani Intent. Jika beberapa aplikasi tersedia, pengguna mungkin ditanya aplikasi mana yang ingin mereka gunakan.

Setelah membuat Intent, Anda dapat meminta agar sistem meluncurkan API terkait aplikasi dalam berbagai cara. Metode yang umum adalah meneruskan Intent ke startActivity() . Sistem akan meluncurkan aplikasi yang diperlukan — dalam hal ini Google Maps — dan mulai Activity yang terkait.

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 tersebut, aplikasi Anda mungkin macet. Untuk alasan ini, Anda harus terlebih dahulu memverifikasi bahwa sebuah diinstal sebelum Anda menampilkan salah satu intent ini kepada pengguna.

Untuk memverifikasi bahwa aplikasi tersedia untuk menerima intent, panggil resolveActivity() di Intent . Jika hasilnya bukan nol, setidaknya ada satu aplikasi yang dapat menangani dan aman untuk memanggil startActivity() Jika hasilnya adalah null, Anda tidak boleh menggunakan intent ini 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 ke URL

Semua string yang diteruskan ke Maksud Google Maps harus dienkode dalam URI. Misalnya, {i>string <i}"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 ditetapkan.

geo:latitude,longitude?z=zoom

Parameter

  • latitude dan longitude menetapkan titik tengah peta.
  • z secara opsional menetapkan tingkat zoom awal peta. Rentang nilai yang diterima 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 memiliki satu hasil, Anda dapat menggunakan intent ini untuk menampilkan pin pada tempat atau alamat tertentu, seperti tempat terkenal, bisnis, fitur geografis, atau kota kecil.

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 ditandai di peta. Parameter q diperlukan untuk semua permintaan Penelusuran. Properti ini menerima lokasi sebagai tempat nama atau alamat Anda. String ini harus dienkode ke URL, jadi alamat seperti "City Hall, New York, NY" harus dikonversi menjadi Kota+Hall,Baru+York,NY.

  • label memungkinkan Anda menetapkan label khusus di tempat yang teridentifikasi di peta. Tujuan label harus ditentukan sebagai String.

Jika Anda meneruskan istilah penelusuran umum, Google Maps akan mencoba menemukan lokasi di dekat lat/lng yang Anda tentukan dan cocok dengan kriteria. Jika tidak ada lokasi ditetapkan, Google Maps akan mencoba menemukan listingan yang 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)

Mencari Restoran di San Francisco

Anda dapat lebih membiaskan hasil penelusuran dengan menentukan parameter zoom dengan string kueri. Dalam contoh di bawah ini, menambahkan zoom 10 akan mencoba untuk menemukan restoran di tingkat kota, bukan di area 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 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 kueri {i>string<i}. Saat menelusuri lokasi yang sangat spesifik, lintang dan bujur tidak diperlukan. Namun, jika Anda tidak tahu alamat tepatnya, Anda dapat mencoba untuk mencondongkan hasil pencarian dengan menentukan sebuah koordinat. Sebagai misalnya, melakukan penelusuran alamat untuk 'Jalan Utama' akan menampilkan terlalu banyak hasil pengujian tersebut.

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 objek area:

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)

Bila Anda tahu penelusuran Anda akan mengembalikan satu nilai, Anda dapat meneruskan label opsional. Label harus ditentukan sebagai String, dan akan muncul di bawah penanda peta. Perlu diketahui bahwa label hanya tersedia jika q ditentukan sebagai koordinat lat/lng.

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 atau lintang/bujur, Anda dapat menampilkan pin di lokasi yang diketahui menggunakan 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

Meluncurkan navigasi belokan demi belokan

Gunakan intent ini untuk meluncurkan navigasi Google Maps dengan rute belokan demi belokan ke alamat atau koordinat yang ditentukan. Arah 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 lintang, koordinat bujur, atau alamat yang diformat dengan kueri. Jika berupa kueri {i>string<i} yang mengembalikan lebih dari satu hasil, hasil pertama adalah dipilih.

  • mode menetapkan metode transportasi. Mode bersifat opsional, dan dapat disetel ke salah satu dari:

    • d untuk mengemudi (default)
    • b untuk bersepeda
    • l untuk sepeda motor
    • w untuk berjalan kaki
  • avoid menetapkan fitur yang harus dihindari rute tersebut. Hindari bersifat opsional dan dapat ditetapkan ke satu atau beberapa:

    • t untuk jalan tol
    • h untuk jalan raya
    • f untuk kapal 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)

Rute ke Taronga Zoo

Jika Anda memilih untuk tidak membayar tol atau naik kapal feri, Anda dapat meminta rute ke mencoba menghindari hal-hal itu.

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 dapat 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 naik sepeda motor, Anda dapat meminta rute meliputi jalan sempit dan jalur yang tidak tersedia untuk mobil. intent di bawah menampilkan hasil sebuah 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 panorama indah dari lokasi terpilih hingga area cakupan. Photosphere kontribusi pengguna, dan Koleksi 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 cbll atau panoid .

  • cbll menerima lintang dan bujur sebagai nilai yang dipisahkan koma (46.414382,10.013988). Aplikasi akan menampilkan foto panorama yang difoto terdekat dengan lokasi ini. Karena gambar Street View secara berkala diperbarui, dan foto mungkin diambil dari posisi yang sedikit berbeda setiap saat, lokasi Anda mungkin akan dipaskan ke panorama saat gambar diperbarui.

  • panoid adalah ID panorama tertentu. Google Maps akan menggunakan ID panorama jika panoid dan cbll ditentukan. ID Panorama tersedia untuk aplikasi Android dari Objek StreetViewPanoramaLocation.

  • cbp adalah parameter opsional yang menyesuaikan orientasi awal kamera. Parameter cbp menggunakan 5 nilai yang dipisahkan koma, yang semuanya bersifat opsional. Nilai yang paling signifikan adalah yang kedua, keempat, dan kelima yang menetapkan bearing, zoom, dan kemiringan. Yang pertama dan ketiga nilai tidak didukung, dan harus ditetapkan ke 0.

    • bearing: menunjukkan judul kompas kamera dalam derajat searah jarum jam dari Utara. Utara sebenarnya adalah 0, timur 90, selatan 180, dan barat 270. Nilai-nilai diteruskan ke bearing akan dibungkus; yaitu, 0°, 360°, dan 720° semuanya menunjuk ke arah yang sama. Bearing didefinisikan sebagai yang kedua dari lima comma separated values.
    • zoom: Menetapkan tingkat zoom kamera. Tingkat zoom default disetel pada 0. Zoom 1 akan menggandakan pembesaran. Zoom dibatasi antara 0 dan tingkat zoom maksimum untuk panorama saat ini. Ini berarti bahwa setiap nilai yang berada di luar rentang ini akan ditetapkan ke ekstrem terdekat yang berada dalam rentang tersebut. Misalnya, nilai -1 akan ditetapkan ke 0. Zoom adalah nilai keempat dari lima nilai yang dipisah koma.
    • tilt: menentukan sudut, atas atau bawah, kamera. Rentangnya adalah -90 antara 0 hingga 90, dengan 90 lurus ke bawah, 0 di tengah cakrawala, dan -90 melihat 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)

Piramida di Street View