İlgili içeriği oluşturmak için kullanılan Android için Google Haritalar uygulaması Google Haritalar'ı Görüntülü Reklam Ağı'nda başlatmak için kullanabileceğiniz çeşitli amaçları gösterir. veya Street View modunda kullanabilirsiniz. Şunu istiyorsanız: uygulamanıza bir harita yerleştirin, lütfen Google Haritalar Android API'sine bakın Başlangıç Kılavuzu.
Genel Bakış
Intent'ler, basit bir işlemi açıklayarak başka bir uygulamada etkinlik başlatmanıza olanak tanır.
"bir harita görüntüle" veya "restoranın bulunduğu yeri gösteren yol tarifi gibi
havaalanı"),
Intent
nesnesini tanımlayın. İlgili içeriği oluşturmak için kullanılan
Android için Google Haritalar uygulaması
birkaç farklı amacı desteklemektedir. Böylece, Google Haritalar uygulamasını
ve şu dört işlemden birini gerçekleştirin:
- Bir haritayı belirtilen bir konumda ve yakınlaştırma düzeyinde görüntüleyin.
- Konumları veya yerleri arayın ve bir haritada görüntüleyin.
- Bir konumdan diğerine yol tarifi isteyin. Yol tarifi döndürülebilir üç ulaşım şekli için geçerli: araba, yürüme, bisiklet.
- Panorama görüntülerini Google Street View'da görüntüleyin.
Bu sayfada, aşağıdakiler için Google Haritalar uygulamasıyla kullanabileceğiniz amaçlar açıklanmaktadır: Android Niyetler ve Amaçlar hakkında daha fazla bilgi için Filtreler veya Android'de yaygın olarak kullanılan amaçlar platformunda Android geliştirici belgelerini inceleyin.
Intent istekleri
Google Haritalar'ı bir amaçla başlatmak için önce
Intent
nesnesini tanımlayın.
- İş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ı, istenen bir öğeyi belirten kodlanmış URL'yi kullanır işlemin gerçekleştirileceği bazı verileri içerir.
- Paket:
setPackage("com.google.android.apps.maps")
çağrılırsa: Android için Google Haritalar uygulamasının Intent'i işlediğinden emin olun. Öğe paket ayarlanmadığında sistem, hangi uygulamalarınIntent
Birden fazla uygulama varsa kullanıcıya hangi uygulamanın kolay bir yoludur.
Intent
oluşturduktan sonra sistemin ilgili
pek çok farklı şekilde tanımlanabilir. Sık kullanılan bir yöntem, Intent
öğesini
startActivity()
yöntemidir. Sistem gerekli uygulamayı başlatır. Bu durumda Google
ve ilk olarak
karşılık gelen Activity
.
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 uygulama belirleyemezse uygulamanız kilitlenebilir. Bu nedenle, öncelikle alıcınızın uygulamasının yüklenmelidir.
Bir uygulamanın, niyeti almaya uygun olduğunu doğrulamak için şu numarayı arayın:
resolveActivity()
Intent
nesnesini tanımlayın. Sonuç null değilse
ve herhangi bir paydaşı olmayan
startActivity()
.
Sonuç null
ise niyeti kullanmamalı ve mümkünse
amacı çağıran özelliği devre dışı bırakmalıdır.
Java
if (mapIntent.resolveActivity(getPackageManager()) != null) { ... }
Kotlin
mapIntent.resolveActivity(packageManager)?.let { ... }
Örneğin, İstanbul'un bir 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 kodlamalı sorgu dizeleri
Google Maps Intents'e iletilen tüm dizeler URI kodlamalı olmalıdır. Örneğin,
"1. ve Pike, Seattle" 1st%20%26%20Pike%2C%20Seattle
olur.
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üleniyor
Haritayı belirli bir konumda ve yakınlaştırma düzeyinde görüntülemek için geo:
amacını kullanın.
geo:latitude,longitude?z=zoom
Parametreler
latitude
velongitude
, haritanın merkez noktasını belirledi.z
isteğe bağlı olarak haritanın ilk yakınlaştırma düzeyini ayarlar. Kabul edilen değerler aralığı 0'dan (tüm dünya) 21'e (tek tek binalar). Üst sınır seçilen konumda bulunan harita verilerine bağlı olarak değişir.
Ö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ı belirtilen bir görüntü alanında görüntülemek için bu amacı kullanın. sorgu için tek bir sonuç varsa bu niyeti kullanarak önemli bir nokta, işletme, coğrafi konum gibi belirli bir yer veya adres, ya da şehir.
geo:latitude,longitude?q=query geo:0,0?q=my+street+address geo:0,0?q=latitude,longitude(label)
Parametreler
Arama, bir haritayı görüntülemek için kullanılan parametrelere ek olarak şu parametrelere sahiptir:
q
, haritada vurgulanacak yerleri tanımlar.q
parametresi tüm Arama istekleri için gereklidir. Bir konumu ya yer olarak kabul eder adı veya adresi. Dize URL olarak kodlanmış olmalıdır. "Belediye Binası, New York, NY" gibi bir adres şuna dönüştürülmelidir: Şehir+Hall,New+York,NY.label
, haritada belirlenen bir yere özel etiket eklemenize olanak tanır. İlgili içeriği oluşturmak için kullanılanlabel
, bir Dize olarak belirtilmelidir.
Kategorik arama
Genel bir arama terimini geçerseniz Google Haritalar bir konumu bulmaya çalışır yakın bir değer girin. Konum belirtildiğinde, Google Haritalar yakındaki 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)
Arama sonuçlarında bir yakınlaştırma parametresi belirterek sorgu dizesiyle değiştirebilirsiniz. Aşağıdaki örnekte, 10 oranında yakınlaştırma eklemek, restoranları yakın yerine şehir düzeyinde bulmak için kullanılı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 adres arandığında, ilgili konum için bir raptiye görüntülenir.
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
için enl/Boyl'ı ayarlıyor ancak sorgu olarak bir adres iletiyor
dize. Çok spesifik bir konumu ararken enlem ve boylam değerlerini
zorunlu değildir. Ancak tam adresi bilmiyorsanız
bir koordinat belirterek arama sonuçlarını etkilemeye çalışmaktır. Örneğin,
Örneğin, 'Ana Cadde' için bir adres araması yapın çok fazla sonuç döndürür
sonuç.
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")
Amaç URI'sına enlem/boylam eklemek, sonuçları belirli bir hedefe alan:
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 bildiğinizde, varsa
etiket ekleyin. Etiketler, Dize olarak belirtilmelidir ve
harita işaretleyiciye dokunun. Etiketlerin yalnızca q
öğesi
Enl/Boyl koordinatı.
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/boylama alternatif olarak, bilinen bir konumda raptiye görüntülemek için artı kodu ekleyin.
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 navigasyon başlatılıyor
Google Haritalar navigasyonunu adım adım yol tarifleriyle başlatmak için bu amacı kullanın belirtilen adres veya koordinat. Yol tarifleri her zaman Konumu Google'a gönderir.
google.navigation:q=a+street+address google.navigation:q=latitude,longitude
Parametreler
q
: Navigasyon aramaları için bitiş noktasını ayarlar. Bu değer, enlem, boylam koordinatları veya sorgu biçimindeki adres. Bu bir sorguysa dizesi birden fazla sonuç döndürürse ilk sonuç seçili.mode
, ulaşım yöntemini ayarlar. Mod isteğe bağlıdır ve şuna ayarlanabilir: Şunlardan biri:- Sürüş için
d
(varsayılan) - Bisiklet için
b
- İki tekerlekli araç için
l
- Yürüyüş için
w
- Sürüş için
avoid
, rotanın kaçınması gereken özellikleri ayarlıyor. Kaçınılması isteğe bağlıdır ve şunlardan biri veya daha fazlasına ayarlanabilir:- Ücretli geçişler için
t
- Otoyollar için
h
- Feribotlar için
f
- Ücretli geçişler için
Örnekler
Aşağıdaki Intent
, Taronga Hayvanat Bahçesi'ne adım adım navigasyon isteğinde bulunacak.
Sidney Avustralya:
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şler ödememeyi veya feribota binmemeyi tercih ediyorsanız kaçınıyor.
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 yapmayı tercih ederseniz 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 tarifini
dar yolları ve arabalara uygun olmayan patikaları içerir. Aşağıdaki intent
değeri şu sonucu döndürür:
bir rota üzerinde çalışıyor.
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üleniyor
Google Street View'ı başlatmak için google.streetview
amacını kullanın. Google Street View
boyunca, belirlenen konumlardan panoramik manzaralar
kapsama alanı dahilindedir.
Kullanıcı tarafından katkıda bulunulan fotoğraf küreleri,
ve
Street View özel koleksiyonları
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'ları bir cbll
veya panoid
içermelidir
parametresinden sonra bir değer girin.
cbll
, enlem ve boylam değerlerini virgülle ayrılmış değerler olarak kabul eder (46.414382,10.013988
). Uygulama, fotoğrafı çekilen panoramayı gösterir bu konuma en yakın. Street View görüntüleri düzenli aralıklarla ve fotoğraflar biraz farklı konumlardan çekilebilir her seferinde farklı bir konuma konumlanmak yeni bir panorama oluşturun.panoid
belirli bir panorama kimliğidir. Google Haritalar, panorama kimliğini aşağıdaki durumlarda kullanır: hempanoid
hem decbll
belirtilmiş. Panorama kimlikleri Android uygulamasıStreetViewPanoramaLocation
nesnesini tanımlayın.cbp
, sabit reklam öğesinin başlangıç yönünü ayarlayan isteğe bağlı bir parametredir. bulun.cbp
parametresi, tümü virgülle ayrılmış 5 değer alır isteğe bağlıdır. En önemli değerler ikinci, dördüncü ve beşincidir Sırasıyla yönü, yakınlaştırmayı ve yatırmayı ayarlar. Birinci ve üçüncü değerleri desteklenmez ve0
olarak ayarlanmalıdır.bearing
: Kameranın pusula yönünü saat yönünde derece olarak gösterir geliştiriyor. Gerçek kuzey 0, doğu 90, güney 180, batı 270'tir. Değerler bearing'e aktarılan içerik sarmalanır; yani 0°, 360° ve 720° açıyla aynı yöne doğru ilerler. Kıvılcım, beşin ikincisi olarak tanımlanır virgülle ayrılmış değerler.zoom
: Kameranın yakınlaştırma seviyesini ayarlar. Varsayılan yakınlaştırma seviyesi ayarlandı 0'da. 1 yakınlaştırma, büyütmeyi iki katına çıkarır. Yakınlaştırma seviyesi ayarlandı 0 ile geçerli panorama için maksimum yakınlaştırma düzeyi arasında olmalıdır. Bu, bu aralığın dışında kalan tüm değerlerin aralığın içinde kalan en yakın uç nokta. Örneğin, -1 değeri 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'dır 0 ile 90 arasında olacak şekilde, 90 tam aşağı, 0 ufka merkezde olacak şekilde ve -90 kişi de doğrudan yukarıya bakıyor.
Ö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 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)