Android için Google Haritalar uygulaması, Google Haritalar'ı görüntülü reklam, arama, navigasyon veya Street View modlarında başlatmak için kullanabileceğiniz çeşitli intent'ler sunar. Uygulamanıza harita yerleştirmek istiyorsanız lütfen Google Haritalar Android API Başlangıç Kılavuzu'na bakın.
Genel Bakış
Intent'ler, gerçekleştirmek istediğiniz basit bir işlemi (ör. "harita görüntüleme" veya "havaalanına giden yol tarifini gösterme") Intent
nesnesinde tanımlayarak başka bir uygulamada etkinlik başlatmanıza olanak tanır. Android için Google Haritalar uygulaması, Google Haritalar uygulamasını başlatmanıza ve dört işlemden birini gerçekleştirmenize olanak tanıyan çeşitli intent'leri destekler:
- Haritayı belirtilen bir konumda ve yakınlaştırma düzeyinde görüntüleyin.
- Konumları veya yerleri arayıp haritada görüntüleyin.
- Bir yerden başka bir yere yol tarifi isteyebilirsiniz. Araba, yürüyüş ve bisiklet olmak üzere üç ulaşım şekli için yol tarifi döndürülebilir.
- Google Street View'da panorama görüntülerini görüntüleyin.
Bu sayfada, Android için Google Haritalar uygulamasında kullanabileceğiniz intent'ler açıklanmaktadır. Intent'ler ve Intent Filtreleri veya Android platformunda ortak Intent'ler hakkında daha fazla bilgi için Android geliştirici belgelerine bakın.
Intent istekleri
Google Haritalar'ı bir intent ile başlatmak için öncelikle eylemini, URI'sini ve paketini belirterek bir Intent
nesnesi oluşturmanız gerekir.
- İşlem: Tüm Google Haritalar intent'leri Görüntüleme işlemi olarak çağrılır (
ACTION_VIEW
). - URI: Google Haritalar intent'leri, istenen işlemi belirten URL kodlamasını ve işlemi gerçekleştirmek için gereken bazı verileri kullanır.
- Paket:
setPackage("com.google.android.apps.maps")
çağrısı, Android için Google Haritalar uygulamasının Intent'i işlemesini sağlar. Paket ayarlanmamışsa sistem,Intent
'yi hangi uygulamaların işleyebileceğini belirler. Birden fazla uygulama varsa kullanıcıdan hangi uygulamayı kullanmak istediği sorulabilir.
Intent
'yi oluşturduktan sonra sistemin ilgili uygulamayı başlatmasını çeşitli şekillerde isteyebilirsiniz. Yaygın bir yöntem, Intent
değerini startActivity()
yöntemine iletmektir. Sistem, gerekli uygulamayı (bu örnekte Google Haritalar) başlatır ve ilgili Activity
'i başlatır.
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)
Sistem, intent'e yanıt verebilecek bir uygulamayı tanımlayamazsa uygulamanız kilitlenebilir. Bu nedenle, bu intent'lerden birini kullanıcıya sunmadan önce öncelikle alıcı uygulamanın yüklü olduğunu doğrulamanız gerekir.
Bir uygulamanın intent'i alıp alamayacağını doğrulamak için Intent
nesnenizden resolveActivity()
işlevini çağırın. Sonuç null değilse intent'i işleyebilecek en az bir uygulama vardır ve startActivity()
çağrılması güvenlidir.
Sonuç null
ise niyeti kullanmamalı ve mümkünse niyeti çağıran özelliği devre dışı bırakmalısınız.
Java
if (mapIntent.resolveActivity(getPackageManager()) != null) { ... }
Kotlin
mapIntent.resolveActivity(packageManager)?.let { ... }
Örneğin, San Francisco haritasını görüntülemek için aşağıdaki kodu kullanabilirsiniz:
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 olarak kodlanmış sorgu dizeleri
Google Haritalar Intent'lerine iletilen tüm dizeler URI kodlamalı olmalıdır. Örneğin, "1st & Pike, Seattle" dizesi 1st%20%26%20Pike%2C%20Seattle
olmalıdır.
Dizedeki boşluklar %20 ile kodlanabilir veya artı işareti (+) ile değiştirilebilir.
Dizelerinizi kodlamak için android.net.Uri
parse()
yöntemini kullanabilirsiniz.
Örneğin:
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"))
Harita görüntüleme
Belirli bir konumda ve yakınlaştırma düzeyinde harita görüntülemek için geo:
intent'ini kullanın.
geo:latitude,longitude?z=zoom
Parametreler
latitude
velongitude
, haritanın merkez noktasını belirler.z
isteğe bağlı olarak haritanın ilk yakınlaştırma düzeyini belirler. Kabul edilen değerler 0 (tüm dünya) ile 21 (tek tek binalar) arasındadır. Üst sınır, seçilen konumda bulunan harita verilerine bağlı olarak değişiklik gösterebilir.
Örnekler
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)
Konum arama
Arama sorgularını belirli bir görüntü alanında görüntülemek için bu amacı kullanın. Sorgu tek bir sonuç içerdiğinde bu amacı kullanarak belirli bir yerde veya adreste (ör. önemli bir yer, işletme, coğrafi özellik veya kasaba) raptiye gösterebilirsiniz.
geo:latitude,longitude?q=query geo:0,0?q=my+street+address geo:0,0?q=latitude,longitude(label)
Parametreler
Arama, harita görüntülemek için kullanılan parametrelere ek olarak aşağıdaki parametreleri de destekler:
q
, haritada vurgulanacak yerleri tanımlar.q
parametresi tüm Arama istekleri için gereklidir. Yeri, yer adı veya adres olarak kabul eder. Dize URL kodlamalı olmalıdır. Bu nedenle, "Belediye Binası, İstanbul, İstanbul" gibi bir adres City+Hall,Istanbul,İstanbul olarak dönüştürülmelidir.label
, haritada tanımlanan bir yere özel etiket ayarlamanızı sağlar.label
dize olarak belirtilmelidir.
Kategorik arama
Genel bir arama terimi gönderirseniz Google Haritalar, belirttiğiniz enlem/boylam yakınında ölçütlerinizle eşleşen bir konum bulmaya çalışır. Belirli bir konum belirtilmezse Google Haritalar, yakınlardaki girişleri bulmaya çalışır. Örneğin:
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)
Sorgu dizesinin yanı sıra bir yakınlaştırma parametresi belirterek arama sonuçlarını daha da etkileyebilirsiniz. Aşağıdaki örnekte, 10 kat yakınlaştırma eklemek, restoranları yakınınızda değil, şehir düzeyinde bulmaya çalışır.
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)
Konum arama
Belirli bir adresi aradığınızda o konumda bir raptiye gösterilir.
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)
Yukarıdaki örnekte 0
,0
enlem/boylam ayarlanır ancak bir adres sorgu dizesi olarak iletilir. Çok spesifik bir konum arıyorsanız enlem ve boylam gerekli değildir. Ancak tam adresi bilmiyorsanız bir koordinat belirterek arama sonuçlarını yönlendirmeye çalışabilirsiniz. Örneğin, "Ana Cadde" için adres araması yaptığınızda çok fazla sonuç döndürülür.
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")
Intent URI'sine lat/lng eklemek, sonuçları belirli bir bölgeye yönlendirir:
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)
Aramanızın tek bir değer döndüreceğini biliyorsanız isteğe bağlı bir etiket iletebilirsiniz. Etiketler dize olarak belirtilmelidir ve harita işaretçisinin altında görünür. Etiketlerin yalnızca q
enlem/boylam koordinatı olarak belirtildiğinde kullanılabildiğini unutmayın.
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)
Açık adrese veya enlem/boylam bilgisine alternatif olarak, plus code kullanarak bilinen bir konumda raptiye gösterebilirsiniz.
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
Adım adım navigasyonu başlatma
Belirtilen adrese veya koordinata adım adım yol tarifi içeren Google Haritalar navigasyonunu başlatmak için bu niyeti kullanın. Yol tarifleri her zaman kullanıcının mevcut konumundan verilir.
google.navigation:q=a+street+address google.navigation:q=latitude,longitude
Parametreler
q
: Gezinme aramalarının bitiş noktasını belirler. Bu değer, enlem, boylam koordinatları veya sorgu biçimli bir adres olabilir. Birden fazla sonuç döndüren bir sorgu dizesiyse ilk sonuç seçilir.mode
, taşıma yöntemini belirler. Mod isteğe bağlıdır ve aşağıdakilerden birine ayarlanabilir:d
sürüş için (varsayılan)- Bisiklet için
b
- İki tekerlekli araç için
l
- Yürüyüş için
w
avoid
, rotanın kaçınmaya çalışması gereken özellikleri belirler. Kaçın seçeneği isteğe bağlıdır ve aşağıdakilerden biri veya daha fazlası olarak ayarlanabilir:- Geçiş ücretleri için
t
h
otoyollar için- Feribotlar için
f
- Geçiş ücretleri için
Örnekler
Aşağıdaki Intent
, Avustralya Sidney'deki Taronga Hayvanat Bahçesi'ne adım adım yol tarifi isteğinde bulunur:
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)
Ücretli geçiş ücreti ödemek veya feribot kullanmak istemiyorsanız bu tür ücretlerden kaçınmaya çalışan bir rota isteğinde bulunabilirsiniz.
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)
Biraz egzersiz yapmak isterseniz bisiklet yolları için yol tarifi isteyebilirsiniz.
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)
Motorlu iki tekerlekli bir araçla gitmeyi tercih ediyorsanız yol tariflerinin, arabaların kullanamadığı dar yolları ve patikaları içermesini isteyebilirsiniz. Aşağıdaki intent
, Hindistan'da bir rota döndürür.
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)
Street View panoramasını görüntüleme
Google Street View'u başlatmak için google.streetview
intent'ini kullanın. Google Street View, kapsam alanında belirlenen konumlardan panoramik görüntüler sunar.
Kullanıcı tarafından eklenen Photosphere'ler ve Street View özel koleksiyonları da kullanılabilir.
google.streetview:cbll=latitude,longitude&cbp=0,bearing,0,zoom,tilt google.streetview:panoid=id&cbp=0,bearing,0,zoom,tilt
Parametreler
Tüm google.streetview
URI'leri bir cbll
veya panoid
parametresi içermelidir.
cbll
, virgülle ayrılmış değerler olarak bir enlem ve boylam kabul eder (46.414382,10.013988
). Uygulama, bu konuma en yakın yerde çekilen panoramayı gösterir. Street View görüntüleri düzenli olarak yenilendiği ve fotoğraflar her seferinde biraz farklı konumlardan çekilebileceği için görüntüler güncellendiğinde konumunuzun farklı bir panoramaya çekilmesi mümkündür.panoid
, belirli bir panorama kimliğidir. Hempanoid
hem decbll
belirtilirse Google Haritalar panorama kimliğini kullanır. Panorama kimlikleri, Android uygulamaları tarafındanStreetViewPanoramaLocation
nesnesinden kullanılabilir.cbp
, kameranın ilk yönünü ayarlayan isteğe bağlı bir parametredir.cbp
parametresi, tümü isteğe bağlı olan 5 virgülle ayrılmış değer alır. En önemli değerler, sırasıyla yön, yakınlaştırma ve eğikliği ayarlayan ikinci, dördüncü ve beşinci değerlerdir. İlk ve üçüncü değerler desteklenmez ve0
olarak ayarlanmalıdır.bearing
: Kameranın pusula istikametini kuzeyden saat yönünde derece cinsinden belirtir. Gerçek kuzey 0, doğu 90, güney 180, batı 270 derecedir. Yöne iletilen değerler sarmalanır. Yani 0°, 360° ve 720° aynı yönü gösterir. Yön, virgülle ayrılmış beş değerden ikincisi olarak tanımlanır.zoom
: Kameranın yakınlaştırma düzeyini ayarlar. Varsayılan yakınlaştırma düzeyi 0 olarak ayarlanır. 1'e ayarlanmış yakınlaştırma, büyütmeyi iki katına çıkarır. Yakınlaştırma, 0 ile mevcut panoramanın maksimum yakınlaştırma düzeyi arasında sınırlandırılır. Bu, bu aralığın dışında kalan tüm değerlerin, aralığa en yakın uç değere ayarlanacağı anlamına gelir. Örneğin, -1 değeri 0 olarak ayarlanır. Yakınlaştırma, virgülle ayrılmış beş değerden dördüncüsüdür.tilt
: Kameranın yukarı veya aşağı açısını belirtir. Aralık -90 ile 0 ila 90 arasındadır. 90 değeri kameranın aşağıya, 0 değeri ufkun ortasına, -90 değeri ise yukarıya baktığını gösterir.
Örnekler
Aşağıda, Street View intent'inin kullanımına ilişkin bazı örnekler verilmiştir.
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)