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 istiyorsanız lütfen Google Haritalar Android API Başlangıç Kılavuzu'na bakın.
Genel bakış
Amaçlar, gerçekleştirmek istediğiniz basit bir işlemi ("harita göster" veya "havaalanının yol tarifini göster" gibi) bir Intent
nesnesinde açıklayarak başka bir uygulamada etkinlik başlatmanızı sağlar. Android için Google Haritalar uygulaması, Google Haritalar uygulamasını başlatmanızı ve dört işlemden birini gerçekleştirmenizi sağlayan çeşitli amaçları destekler:
- 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. Üç ulaşım şekli için yol tarifi verilebilir: arabayla, yaya, bisikletle.
- Panorama görüntülerini Google Street View'da görüntüleyin.
Bu sayfada, Android için Google Haritalar uygulamasıyla kullanabileceğiniz amaçlar açıklanmaktadır. Amaçlar ve Amaç Filtreleri veya Android platformunda yaygın olarak kullanılan amaçlar hakkında daha fazla bilgi için Android geliştirici belgelerine bakın.
Intent istekleri
Google Haritalar'ı bir amaçla başlatmak için önce Intent
nesnesi oluşturup eylemini, URI'sını 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ı, istenen işlemi belirten URL kodlamalı ve bu işlem için kullanılacak bazı verileri kullanır.
- Paket:
setPackage("com.google.android.apps.maps")
çağrısı yapıldığında Android için Google Haritalar uygulamasının Intent'i işleyebilmesi sağlanır. Paket ayarlanmazsa sistem,Intent
öğesini hangi uygulamaların işleyebileceğini belirler. Birden fazla uygulama varsa kullanıcıya hangi uygulamayı kullanmak istediği sorulabilir.
Intent
oluşturduktan sonra, sistemden ilgili uygulamayı birkaç şekilde başlatmasını isteyebilirsiniz. Yaygın olarak kullanılan bir yöntem, Intent
öğesini startActivity()
yöntemine iletmektir. Sistem gerekli uygulamayı (bu durumda Google Haritalar) başlatır ve karşılık gelen Activity
işlemini 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 uygulama belirleyemezse uygulamanız kilitlenebilir. Bu nedenle, kullanıcıya bu niyetlerden birini sunmadan önce bir alıcı uygulamanın yüklü olduğunu doğrulamanız gerekir.
Bir uygulamanın niyeti almaya uygun olduğunu doğrulamak için Intent
nesnenizde resolveActivity()
yöntemini çağırın. Sonuç null değilse amacı işleyebilecek en az bir uygulama vardır ve startActivity()
çağrısı yapmak güvenlidir.
Sonuç null
ise niyeti kullanmamanız ve mümkünse amacı çağıran özelliği devre dışı bırakmanız gerekir.
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, "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ü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 0 (tüm dünya) ile 21 (tek tek binalar) arasında değişir. Üst sınır, seçilen konumdaki mevcut harita verilerine bağlı olarak değişebilir.
Ö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. Sorgunun tek bir sonucu olduğunda, önemli bir yer, işletme, coğrafi konum veya şehir gibi belirli bir yer veya adreste bir raptiye görüntülemek için bu niyeti kullanabilirsiniz.
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 aşağıdaki parametreleri de destekler:
q
, haritada vurgulanacak yerleri tanımlar.q
parametresi tüm Arama istekleri için gereklidir. Bir konumu ya yer adı ya da adres olarak kabul eder. Dize URL olarak kodlanmış olmalıdır. Bu nedenle "Belediye Binası, New York, NY" gibi bir adres Şehir+Hall,New+York,NY biçimine dönüştürülmelidir.label
, haritada belirlenen bir yere özel etiket eklemenize olanak tanır.label
bir Dize olarak belirtilmelidir.
Kategorik arama
Genel bir arama terimini geçerseniz Google Haritalar, belirttiğiniz enl/boy bilgisine yakın ve ölçütlerinizle eşleşen konumu bulmaya çalışır. Konum belirtilmezse 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)
Sorgu dizesiyle birlikte bir yakınlaştırma parametresi belirterek arama sonuçlarında daha fazla ağırlık verebilirsiniz. Aşağıdaki örnekte 10 yakınlaştırma ayarı eklendiğinde, yakındaki restoranlar yerine şehir düzeyindeki restoranlar bulmaya çalışı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 örnek,0
, 0
için enl/boy değerini ayarlar ancak bir adresi sorgu dizesi olarak geçirir. Çok spesifik bir konumu ararken enlem ve boylam bilgileri gerekmez. Ancak tam adresi bilmiyorsanız bir koordinat belirterek arama sonuçlarında sapmayı deneyebilirsiniz. Örneğin, "Ana Cadde" için bir adres araması yapmak çok fazla sonuç döndürü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")
Amaç URI'sine enlem/boylam eklemek, sonuçları belirli bir alana doğru ağırlıklandırır:
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 isteğe bağlı bir etiket iletebilirsiniz. Etiketler, Dize olarak belirtilmelidir ve harita işaretleyicinin 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/boylama alternatif olarak, bilinen bir konumdaki bir raptiyeyi göstermek için artı kodu kullanabilirsiniz.
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
Bu amacı, belirtilen adres veya koordinat için adım adım yol tarifi içeren Google Haritalar navigasyonunu başlatmak için kullanın. Yol tarifi her zaman kullanıcının geçerli konumundan verilir.
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 bir adres olabilir. Birden fazla sonuç döndüren bir sorgu dizesiyse ilk sonuç seçilir.mode
, ulaşım yöntemini ayarlar. Mod isteğe bağlıdır ve şunlardan birine ayarlanabilir:- 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çınma seçeneği isteğe bağlıdır ve şu seçeneklerden birine veya birkaçı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
, Sidney'deki Sidney'deki Taronga Hayvanat Bahçesi'ne adım adım navigasyon isteğinde bulunacak:
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 ederseniz bu sorunlardan kaçınmayı deneyen bir rota talep edebilirsiniz.
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 tarifinin dar yolları ve arabalara uygun olmayan yolları içermesini isteyebilirsiniz. Aşağıdaki intent
, Hindistan'da bir rotayı 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üleniyor
Google Street View'ı başlatmak için google.streetview
amacını kullanın. Google Street View, kapsam alanı genelinde belirli konumlardan panoramik görünümler sağlar.
Kullanıcı tarafından katkıda bulunulan fotoğraf küreleri 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 bir cbll
veya panoid
parametresi içermelidir.
cbll
, enlem ve boylam değerlerini virgülle ayrılmış değerler (46.414382,10.013988
) olarak kabul eder. Uygulama, bu konuma en yakın zamanda fotoğrafı çekilen 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 konumunuz farklı bir panoramaya yansıtılabilir.panoid
belirli bir panorama kimliğidir. Hempanoid
hem decbll
belirtilmişse Google Haritalar, panorama kimliğini kullanır. Panorama kimlikleri, Android uygulamasındaStreetViewPanoramaLocation
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 ve virgülle ayrılmış 5 değer alır. En önemli değerler, sırasıyla yönü, yakınlaştırmayı ve yatırmayı ayarlayan ikinci, dördüncü ve beşinci değerlerdir. Birinci ve üçüncü değerler desteklenmez ve0
olarak ayarlanmalıdır.bearing
: Kameranın pusula yönünü Kuzey'den saat yönünde derece cinsinden gösterir. Gerçek kuzey 0, doğu 90, güney 180, batı 270'tir. Değere iletilen değerler sarmalanır (yani 0°, 360° ve 720° tüm noktaları aynı yönde). İşaret, 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 yakınlaştırma, büyütmeyi iki katına çıkarır. Yakınlaştırma değeri, geçerli panorama için 0 ile maksimum yakınlık seviyesi arasında olacak şekilde ayarlanır. Bu, bu aralığın dışında kalan herhangi bir değerin, aralıktaki en yakın uç noktaya 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. Bu aralık -90 ile 0 ile 90 arasındadır; 90 tam aşağı, 0 ufuk çizgisinin ortasında ve -90 değeri tam yukarıya bakar.
Ö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)