Android için Google Haritalar uygulaması, Google Haritalar'ı görüntüleme, arama, gezinme veya Street View modlarında başlatmak için kullanabileceğiniz çeşitli amaçlar sunar. Uygulamanıza harita yerleştirmek için Android için Haritalar SDK'sı Hızlı Başlangıç Kılavuzu'na bakın.
Android Automotive OS (AAOS) platformları için belirli hususlar ve ek amaçlar mevcuttur. Daha fazla bilgi için Android Automotive için Google Haritalar Intent'leri dokümanlarını inceleyin.
Genel Bakış
Amaçlar, gerçekleştirmek istediğiniz bir işlemi (ör. "harita göster" veya "havaalanına yol tarifi göster") bir Intent nesnesinde açıklayarak 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 amaçları destekler:
- Belirtilen konumda ve yakınlaştırma seviyesinde bir harita gösterir.
- Konumları veya yerleri arama ve bunları haritada gösterme
- Bir konumdan başka bir konuma yol tarifi isteğinde bulunma Araba, yaya ve bisiklet olmak üzere üç ulaşım modu için yol tarifi döndürülebilir.
- Google Street View'da panoramik görüntüleri gösterin.
Bu sayfada, Android için Google Haritalar uygulamasında kullanabileceğiniz amaçlar açıklanmaktadır. Amaçlar hakkında daha fazla bilgi için Amaçlar ve amaç filtreleri ile Sık kullanılan amaçlar başlıklı makaleleri inceleyin.
Amaç istekleri
Google Haritalar'ı bir amaçla başlatmak için öncelikle Intent
nesnesi oluşturmanız, bu nesnenin işlemini, URI'sini ve paketini belirtmeniz gerekir.
- İşlem: Tüm Google Haritalar amaçları, Görüntüleme işlemi olarak adlandırılır:
ACTION_VIEW. - URI: Google Haritalar amaçları, seçili bir işlemi ve işlemi gerçekleştirmek için kullanılacak bazı verileri belirten URL olarak kodlanmış URI'ler kullanır.
Paket: Calling
setPackage("com.google.android.apps.maps"), Android için Google Haritalar uygulamasının Intent'i işlemesini sağlar. Paket ayarlanmamışsa sistem,Intentişlevini hangi uygulamaların kullanabileceğini belirler. Birden fazla uygulama varsa kullanıcıya hangi uygulamayı kullanmak istediği sorulabilir.
Intent oluşturduktan sonra sistemin ilgili uygulamayı çeşitli şekillerde başlatmasını 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'ı 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, amaca yanıt verebilecek bir uygulamayı tanımlayamazsa uygulamanız kilitlenebilir. Bu nedenle, kullanıcılara bu amaçlardan birini sunmadan önce alıcı uygulamanın yüklendiğini doğrulayın.
Bir uygulamanın amaç alıp alamadığını doğrulamak için Intent nesnenizde resolveActivity() işlevini çağırın. Sonuç boş değilse (non-null), isteği işleyebilecek en az bir uygulama vardır ve startActivity() çağrısı yapmak güvenlidir. Sonuç null ise amaçlı işlemi kullanmayın ve mümkünse amaçlı işlemi çağıran özelliği devre dışı bırakın.
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 amaçlarına iletilen tüm dizeler URI kodlamasına sahip 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şaretiyle (+) değiştirilebilir.
Dizelerinizi kodlamak için android.net.Uri encode() 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 seviyesinde harita görüntülemek için geo: amacını kullanın.
geo:latitude,longitude?z=zoom
Parametreler
latitudevelongitude, haritanın odak noktasını ayarlar.z, isteğe bağlı olarak haritanın ilk yakınlaştırma seviyesini ayarlar. Kabul edilen değerler 0 (tüm dünya) ile 21 (binalar) arasındadır. Üst sınır, seçilen konumda bulunan harita verilerine bağlı olarak değişebilir.
Örnekler
Java
// Creates an Intent that loads 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 loads 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 arayın
Belirli bir görünüm alanındaki arama sorgularını göstermek için bu amaca yönelik işlevi kullanın. Sorgu tek bir sonuç içerdiğinde bu amaca yönelik işlemi kullanarak önemli yer, işletme, coğrafi özellik veya kasaba gibi belirli bir yerde ya da adreste bir 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.qparametresi tüm arama istekleri için zorunludur. Konum, yer adı veya adres olarak kabul edilir. Dize URL kodlamalı olmalıdır. Bu nedenle,City Hall, New York, NYgibi bir adresCity+Hall,New+York,NYolarak dönüştürülmelidir.label, haritada tanımlanan bir yere özel etiket eklemenizi sağlar.label, Dize olarak belirtilmelidir.
Kategorik arama
Genel bir arama terimi iletirseniz Google Haritalar, belirttiğiniz enlem ve boylamın yakınında, ölçütlerinize uygun bir konum bulmaya çalışır. Konum belirtilmemişse Google Haritalar yakındaki listelemeleri 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 dizesiyle birlikte bir yakınlaştırma parametresi belirterek arama sonuçlarını daha da etkileyebilirsiniz. Aşağıdaki örnekte, 10 kat yakınlaştırma eklenerek yakındaki restoranlar yerine şehir düzeyinde restoranlar bulunmaya çalışılıyor.
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 adres arandığında 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)
Önceki örnekte enlem ve boylam 0,0 olarak ayarlanıyor ancak sorgu dizesi olarak bir adres aktarılıyor. Belirli bir konum aranırken enlem ve boylam gerekmez. Ancak tam adresi bilmiyorsanız bir koordinat belirterek arama sonuçlarını etkilemeye çalışabilirsiniz. Örneğin, "Ana Cadde" için adres araması yapıldığında çok fazla sonuç döndürülebilir.
Java
// Searching for 'Main Street' returns too many results.
Uri gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street");
Kotlin
// Searching for 'Main Street' returns too many results.
val gmmIntentUri = Uri.parse("geo:0,0?q=101+main+street")
Niyet URI'sine enlem ve boylam eklemek sonuçları belirli bir alana doğru 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ürdüğünü biliyorsanız isteğe bağlı bir etiket iletmek isteyebilirsiniz. Etiketler dize olarak belirtilmeli ve harita işaretleyicisinin altında görünmelidir. Etiketlerin yalnızca q enlem ve 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=-33.8666,151.1957(Google+Sydney)");
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 adres veya enlem ve boylam yerine 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 preceding examples.
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 preceding examples.
Adım adım navigasyonu başlatma
Belirtilen adrese veya koordinata adım adım yol tarifiyle Google Haritalar navigasyonunu başlatmak için bu amaç URI'sini kullanın. Yol tarifleri her zaman kullanıcının mevcut konumundan başlar.
google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
Parametreler
q: Gezinme aramaları için uç noktayı ayarlar. Bu değer, enlem ve boylam koordinatları veya sorgu biçimli bir adres olabilir. Birden fazla sonuç döndüren bir sorgu dizesiyse ilk sonuç seçilir.modeulaşım yöntemini belirler.modeisteğe bağlıdır ve aşağıdaki değerlerden biri olarak ayarlanabilir:d(varsayılan)- Bisiklet için
b - İki tekerlekli araç için
l wyürüyüş
avoid, rotanın kaçınmaya çalışması gereken özellikleri belirler.avoidisteğe bağlıdır ve aşağıdaki değerlerden biri veya daha fazlası olarak ayarlanabilir:- Geçiş ücretleri için
t hotoyollar için- Feribotlar için
f
- Geçiş ücretleri için
Örnekler
Aşağıdaki Intent istekleri, Avustralya'nın Sidney şehrindeki Taronga Hayvanat Bahçesi'ne adım adım yol tarifi veriyor:
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)
Gişe ödemek veya feribota binmek istemiyorsanız bu özellikleri kullanmamaya çalışan bir yönlendirme isteyebilirsiniz.
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)
Egzersiz yapmak isterseniz bunun yerine bisikletle 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 araç kullanmayı tercih ederseniz yol tariflerinin, arabaların geçemeyeceği 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ı görüntüleme
Google Street View'u başlatmak için google.streetview amacını kullanın. Google Street View, kapsam alanı genelindeki belirli konumlardan panoramik görünümler sunar. Kullanıcıların katkıda bulunduğu 360 derece fotoğraflar ve Street View özel koleksiyonları da mevcuttur.
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 cbll veya panoid parametresini içermelidir:
cbll, virgülle ayrılmış değerler olarak enlem ve boylamı kabul eder (46.414382,10.013988). Uygulama, bu konuma en yakın çekilmiş panoramayı gösterir. Street View görüntüleri düzenli olarak yenilendiği ve fotoğraflar her seferinde biraz farklı konumlardan çekilebildiği için, görüntüler güncellendiğinde konumunuzun farklı bir panoramaya tutturulması mümkündür.panoid, belirli bir panorama kimliğidir. Google Haritalar, hempanoidhem decbllbelirtilmişse panorama kimliğini kullanır. Panorama kimlikleri,StreetViewPanoramaLocationnesnesinden bir Android uygulamasına sunulur.cbp, kameranın ilk yönünü ayarlayan isteğe bağlı bir parametredir.cbpparametresi, virgülle ayrılmış 5 değer alır. Bu değerlerin tümü isteğe bağlıdır. En önemli değerler, sırasıyla yönü, yakınlaştırmayı ve eğimi ayarlayan ikinci, dördüncü ve beşinci değerlerdir. Birinci ve üçüncü değerler desteklenmez ve0olarak ayarlanmalıdır.bearing: Kameranın pusula yönünü kuzeyden saat yönünde derece cinsinden gösterir. Gerçek kuzey 0, doğu 90, güney 180, batı ise- Rulman sargılarına iletilen değerler. Örneğin, 0°, 360° ve 720° değerleri aynı yönü gösterir. Rulman, virgülle ayrılmış beş değerden ikincisi olarak tanımlanır.
zoom: Kameranın yakınlaştırma seviyesini ayarlar. Varsayılan yakınlaştırma seviyesi 0 olarak ayarlanır. 1'lik bir yakınlaştırma, büyütmeyi iki katına çıkarır. Yakınlaştırma, 0 ile mevcut panorama için maksimum yakınlaştırma seviyesi arasında sınırlandırılır. Bu, bu aralığın dışında kalan herhangi bir değerin, aralık içinde kalan 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 ve 90 arasındadır. 90 değeri doğrudan aşağıyı, 0 değeri ufuk çizgisini, -90 değeri ise doğrudan yukarıyı gösterir.
Örnekler
Aşağıda, Street View amacının 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 angles 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 angles 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)