Aplikasi saya perlu menunjukkan arah Google Maps dari A ke B, tetapi saya tidak ingin memasukkan Google Maps ke dalam aplikasi saya - sebagai gantinya, saya ingin meluncurkannya menggunakan Intent. Apakah ini mungkin? Jika ya, bagaimana?
java
android
google-maps
android-intent
Lars D
sumber
sumber
Jawaban:
Anda dapat menggunakan sesuatu seperti ini:
Untuk memulai navigasi dari lokasi saat ini, hapus
saddr
parameter dan nilai.Anda dapat menggunakan alamat jalan yang sebenarnya, bukan lintang dan bujur. Namun ini akan memberikan pengguna dialog untuk memilih antara membukanya melalui browser atau Google Maps.
Ini akan menjalankan Google Maps dalam mode navigasi langsung:
MEMPERBARUI
Pada Mei 2017 Google meluncurkan API baru untuk URL Google Maps lintas platform universal:
https://developers.google.com/maps/documentation/urls/guide
Anda dapat menggunakan Intents dengan API baru juga.
sumber
intent.setClassName("com.google.android.apps.maps", "com.google.android.maps.MapsActivity");
Ini sedikit di luar topik karena Anda meminta "arah", tetapi Anda juga dapat menggunakan skema Geo URI yang dijelaskan dalam Dokumentasi Android:
http://developer.android.com/guide/appendix/g-app-intents.html
Masalah menggunakan "geo: latitude, longitude" adalah bahwa Google Maps hanya terpusat pada titik Anda, tanpa pin atau label.
Itu cukup membingungkan, terutama jika Anda perlu menunjuk ke tempat yang tepat atau / dan menanyakan arah.
Jika Anda menggunakan parameter kueri "geo: lat, lon? Q = name" untuk memberi label geopoint Anda, ia menggunakan kueri untuk pencarian dan mengabaikan parameter lat / lon.
Saya menemukan cara untuk memusatkan peta dengan lat / lon dan menampilkan pin dengan label khusus, sangat bagus untuk ditampilkan dan berguna ketika menanyakan arah atau tindakan lain:
CATATAN (oleh @TheNail): Tidak berfungsi di Maps v.7 (versi terbaru saat penulisan). Akan mengabaikan koordinat dan mencari objek dengan nama yang diberikan di antara tanda kurung. Lihat juga Intent untuk Google Maps 7.0.0 dengan lokasi
sumber
geo:37.423156,-122.084917?q=37.423156,-122.084917 ...
?Meskipun jawaban saat ini sangat bagus, tidak ada yang melakukan apa yang saya cari, saya ingin membuka aplikasi peta saja, menambahkan nama untuk setiap lokasi sumber dan tujuan, menggunakan skema geo URI tidak akan bekerja untuk saya sama sekali dan tautan web peta tidak memiliki label, jadi saya datang dengan solusi ini, yang pada dasarnya merupakan gabungan dari solusi dan komentar lain yang dibuat di sini, semoga bermanfaat bagi orang lain yang melihat pertanyaan ini.
Untuk menggunakan lokasi Anda saat ini sebagai titik awal (sayangnya saya belum menemukan cara untuk memberi label lokasi saat ini) kemudian gunakan yang berikut ini
Untuk kelengkapan, jika pengguna tidak memiliki aplikasi peta yang diinstal maka itu akan menjadi ide yang bagus untuk menangkap ActivityNotFoundException, maka kita dapat memulai aktivitas lagi tanpa pembatasan aplikasi peta, kita dapat cukup yakin bahwa kita tidak akan pernah mendapatkan ke Toast pada akhirnya karena browser internet adalah aplikasi yang valid untuk meluncurkan skema url ini juga.
PS Setiap lintang atau bujur yang digunakan dalam contoh saya tidak mewakili lokasi saya, kemiripan dengan lokasi sebenarnya adalah kebetulan murni, alias saya bukan dari Afrika: P
EDIT:
Untuk petunjuk arah, maksud navigasi sekarang didukung dengan google.navigation
sumber
Menggunakan URL Google Maps lintas-platform terbaru : Bahkan jika aplikasi google maps tidak ada, itu akan terbuka di browser
Contoh https://www.google.com/maps/dir/?api=1&origin=81.23444,67.0000&destination=80.252059,13.060604
sumber
Buka Google Maps menggunakan Intent dengan Mode yang berbeda:
Kami dapat membuka aplikasi Google Maps menggunakan niat:
Di sini, "mode = b" adalah untuk sepeda.
Kita dapat mengatur mode mengemudi, berjalan, dan bersepeda dengan menggunakan:
Anda dapat menemukan lebih banyak tentang niat dengan peta google di sini .
Catatan: Jika tidak ada rute untuk sepeda / mobil / berjalan maka itu akan menunjukkan kepada Anda "Tidak dapat menemukan jalan ke sana"
Anda dapat memeriksa jawaban asli saya di sini .
sumber
Nah Anda bisa mencoba membuka aplikasi bawaan Android Maps dengan menggunakan
Intent.setClassName
metode tersebut.sumber
Untuk beberapa titik jalan, berikut ini dapat digunakan juga.
Set koordinat pertama adalah lokasi awal Anda. Semua berikutnya adalah titik jalan, rute yang direncanakan melewati.
Terus tambahkan titik jalan dengan menyimpulkan "/ lintang, bujur" di akhir. Tampaknya ada batas 23 titik jalan menurut google docs . Tidak yakin apakah itu berlaku untuk Android juga.
sumber
Jika Anda tertarik untuk menunjukkan Lintang dan Bujur dari arah saat ini, Anda dapat menggunakan ini:
Permintaan berikut akan membantu Anda melakukan itu. Anda dapat melewati garis lintang dan bujur tujuan di sini:
Gunakan di atas sebagai:
Atau jika Anda ingin tampil melalui lokasi, gunakan:
Info lebih lanjut di sini: Google Maps Intents untuk Android
sumber
mapIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Google
DirectionsView
dengan lokasi sumber sebagai lokasi saat ini dan lokasi tujuan sebagaimana diberikan sebagai stringDalam contoh di atas
destinationCityName
adalah string yang dapat dimodifikasi yang diperlukan.sumber
coba ini
sumber
Inilah yang bekerja untuk saya:
sumber
jika Anda tahu titik A, titik B (dan fitur apa pun atau jejak di antaranya) Anda dapat menggunakan file KML bersama dengan niat Anda.
untuk info lebih lanjut, lihat jawaban SO ini
CATATAN: contoh ini menggunakan file sampel yang (pada Maret13) masih online. jika sudah luring, cari file kml daring dan ubah url Anda
sumber
Pertama, Anda perlu sekarang bahwa Anda dapat menggunakan maksud tersirat, dokumentasi android memberi kami maksud umum yang sangat terperinci untuk mengimplementasikan maksud peta yang Anda butuhkan untuk membuat maksud baru dengan dua parameter
Untuk tindakan yang dapat kita gunakan
Intent.ACTION_VIEW
dan untuk Uri kita harus membangunnya, di bawah ini saya melampirkan kode sampel untuk membuat, membangun, memulai aktivitas.sumber
<scheme>://<authority><absolute path>?<query>#<fragment>
bukan URI buram<scheme>:<opaque part>#<fragment>
. Kode di atas menghasilkan URI berikut:geo:/0%2C0?Eiffel%20Tower
yang menyebabkan aplikasi Google Maps mogok. Bahkan dokumentasi resmi menggunakan URI mentah / buram untuk alasan ini. Kode yang benar akan menjadi:Uri.parse("geo:0,0?q=" + Uri.encode("Eiffel Tower"))
Solusi kotlin yang bagus, menggunakan jawaban lintas-platform terbaru yang disebutkan oleh ...
Tidak ada Uri.toString yang tidak perlu dan Uri.parse, jawaban ini bersih dan minimal:
sumber
Anda dapat Meluncurkan Google Maps Directions melalui niat di Android melalui cara ini
sumber