Android için Google Haritalar uygulaması, Google Haritalar'ı görüntülü, arama, navigasyon veya Street View modlarında başlatmak için kullanabileceğiniz çeşitli amaçlara sahiptir. Uygulamanıza bir harita yerleştirmek isterseniz lütfen Google Haritalar Android API'si Başlangıç Kılavuzu'na bakın.
Genel bakış
Amaçlar, Intent
nesnesinde gerçekleştirmek istediğiniz basit bir işlemi ("harita göster" veya "havaalanına yol tarifi göster") açıklayarak başka bir uygulamada etkinlik başlatmanıza olanak tanır. Android için Google Haritalar uygulaması, birkaç farklı amacı desteklemektedir. Bu sayede Google Haritalar uygulamasını başlatıp dört işlemden birini yapabilirsiniz:
- Bir haritayı belirtilen konum ve yakınlaştırma düzeyinde görüntüleyin.
- Konum veya yer arayın ve bunları harita üzerinde görüntüleyin.
- Bir konumdan diğerine yol tarifi isteyin. Yol tarifleri üç ulaşım modu için döndürülebilir: Araba, yürüyüş, bisiklet.
- Google Street View'da panoramik görüntüler görüntüleyin.
Bu sayfada, Android için Google Haritalar uygulamasıyla kullanabileceğiniz amaçlar açıklanmaktadır. Niyetler ve Amaç Filtreleri veya Android platformunda yaygın olarak kullanılan Niyetler hakkında daha fazla bilgi edinmek için Android geliştirici dokümanlarına bakın.
Intent istekleri
Google Haritalar'ı bir intent ile başlatmak için önce işlemini, URI'yi ve paketi belirten bir Intent
nesnesi oluşturmanız 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ı, işlem gerçekleştirilecek bazı verilerin yanı sıra istenen bir işlemi belirten URL kodlamalı kullanır.
- Paket:
setPackage("com.google.android.apps.maps")
işlevi çağrıldığında, Android için Google Haritalar uygulaması Intent'in işleyebilir. Paket ayarlanmadıysa sistem,Intent
uygulamalarını hangi uygulamaların işleyebileceğini belirler. Birden fazla uygulama varsa kullanıcıya hangi uygulamayı kullanmak istediği sorulabilir.
Intent
oluşturulduktan sonra sistemin ilgili uygulamayı birkaç şekilde başlatmasını isteyebilirsiniz. Yaygın bir yöntem, Intent
'in startActivity()
yöntemine iletilmesidir. Sistem gerekli uygulamayı (bu örnekte Google Haritalar) başlatır ve ilgili Activity
uygulamasını 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, bir kullanıcıya bu niyetlerden birini göstermeden önce alıcı uygulamanın yüklendiğini doğrulamanız gerekir.
Bir uygulamanın, amacı almaya uygun olduğunu doğrulamak için Intent
nesnenizde resolveActivity()
numaralı telefonu arayın. Sonuç boş değilse işlemi gerçekleştirebilecek en az bir uygulama vardır ve startActivity()
işlevini çağırmak güvenlidir.
Sonuç null
ise amacı 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, 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 olarak kodlanmış 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
Bir haritayı belirli bir konum 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 odak 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 konumda kullanılabilen 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
Belirli bir görüntü alanındaki arama sorgularını görüntülemek için bu amacı kullanın. Sorgunun tek bir sonucu olduğunda, belirli bir yer veya adreste (ör. önemli nokta, işletme, coğrafi özellik veya şehir) bir raptiye görüntülemek için bu amacı kullanabilirsiniz.
geo:latitude,longitude?q=query geo:0,0?q=my+street+address geo:0,0?q=latitude,longitude(label)
Parametreler
Aramada, bir haritayı görüntülemek için kullanılan parametrelere ek olarak aşağıdaki parametreler de desteklenir:
q
, haritada vurgulanacak yerleri tanımlar. Tüm arama istekleri içinq
parametresi gereklidir. Bir konumu yer adı veya adres olarak kabul eder. Dize URL olarak kodlanmış olmalıdır. Bu nedenle, "Belediye Binası, New York, NY" gibi bir adres City+Hall,New+York,New York'a dönüştürülmelidir.label
, haritada tanımlanan bir yerde özel etiket oluşturmanıza olanak tanır.label
, bir Dize olarak belirtilmelidir.
Kategorik arama
Genel bir arama terimi geçerseniz, Google Haritalar belirttiğiniz kriterlere uygun ve kriterlerinizle eşleşen bir konumu bulmaya çalışır. Konum belirtilmemişse 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ına daha fazla ağırlık verebilirsiniz. Aşağıdaki örnekte 10 değerindeki bir yakınlaştırma eklemek, restoranları yakın yerler yerine ş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 adres arandığında, ilgili konumda 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
lat/lng'si ayarlanır ancak sorgu dizesi olarak bir adres aktarılır. Çok spesifik bir yer ararken enlem ve boylam gerekmez. Bununla birlikte, tam adresi bilmiyorsanız koordinat belirterek aramanın sonuçlarına ağırlık vermeyi 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")
Niyet URI'sine bir lat/lng eklemek, sonuçların belirli bir alana yönelik olmasını engeller:
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 sağlayacağını bildiğinizde isteğe bağlı bir etiket iletmek isteyebilirsiniz. Etiketler bir dize olarak belirtilmelidir ve harita işaretleyicinin altında görünür. Etiketlerin yalnızca q
enlem/boylam koordinatı olarak belirtildiğinde kullanılabilir.
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 artı kodu kullanarak bilinen bir konumdaki raptiyeyi görüntüleyebilirsiniz.
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
Bu amaçla, belirtilen adrese veya koordinat için adım adım yol tarifleriyle Google Haritalar navigasyonu başlatın. Yol tarifi her zaman kullanıcının mevcut konumundan yapılır.
google.navigation:q=a+street+address google.navigation:q=latitude,longitude
Parametreler
q
: Gezinme aramaları için bitiş noktası ayarlar. Bu değer enlem, boylam koordinatları veya sorgu biçiminde bir adres olabilir. Birden fazla sonuç döndüren bir sorgu dizesiyse ilk sonuç seçilir.Ulaşım yöntemini
mode
belirler. Mod isteğe bağlıdır ve aşağıdakilerden biriyle 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 ayarlar. Kaçınma isteğe bağlıdır ve aşağıdakilerden biri 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 Avustralya'daki Taronga Hayvanat Bahçesi'ne adım adım gitme 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)
Geçiş ücreti ödememeyi ya da feribotla seyahat etmeyi tercih ediyorsanız bu gibi durumları önlemek için yönlendirme 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 bunun yerine bisiklet 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 bir iki tekerlekli araç kullanmayı tercih ederseniz, yol tariflerinin dar yolları ve arabaların kullanamadığı yolları 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'ı başlatmak için google.streetview
niyetini kullanın. Google Street View, kapsama alanı boyunca belirli konumlardan panoramik manzaralar sunar.
Kullanıcılar tarafından eklenen Photo Sphere'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'ları bir cbll
veya panoid
parametresi içermelidir.
cbll
, enlemi ve boylamı virgülle ayrılmış değerler (46.414382,10.013988
) olarak kabul eder. Uygulama, bu konuma en yakın konumda çekilen panoramayı görüntüler. Street View görüntüleri düzenli olarak yenilendiğinden ve her seferinde fotoğraflar biraz farklı konumlardan çekilebildiğinden, resimler güncellendiğinde konumunuz farklı bir panoramaya eklenebilir.panoid
, belirli bir panorama kimliğidir. Hempanoid
hem decbll
belirtilmişse Google Haritalar, panorama kimliğini kullanır. Panorama kimlikleri,StreetViewPanoramaLocation
nesnesinden bir Android uygulaması tarafından kullanılabilir.cbp
, kameranın başlangıç yönünü ayarlayan isteğe bağlı bir parametredir.cbp
parametresi virgülle ayrılmış 5 değer alır. Bunların tümü isteğe bağlıdır. En önemli değerler, sırasıyla yatağı, yakınlaştırmayı ve eğimi belirleyen 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ü saat yönünde Kuzeyden gösterir. Doğru kuzey 0, doğu 90, güney 180, batı 270'tir. Rulmana iletilen değerler sarmalanır; yani 0°, 360° ve 720° hepsi aynı yöne işaret eder. Yatak, beş virgülle ayrılmış değerlerin 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 yakınlaştırma, büyütme oranını iki katına çıkarır. Yakınlaştırma, 0 ile mevcut panoramanın maksimum yakınlaştırma düzeyi arasında kalır. Yani, bu aralığın dışında kalan tüm değerler, aralık içindeki en yakın uç noktaya ayarlanır. Ö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-90 arasındadır. 90'ı tam aşağı, 0'ı ufuk çizgisine bakan ve -90'ı yukarıya bakın.
Örnekler
Aşağıda Street View amacını kullanmaya 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)