Android İçin Google Haritalar Amaçları

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:

  1. Bir haritayı belirtilen konum ve yakınlaştırma düzeyinde görüntüleyin.
  2. Konum veya yer arayın ve bunları harita üzerinde görüntüleyin.
  3. Bir konumdan diğerine yol tarifi isteyin. Yol tarifleri üç ulaşım modu için döndürülebilir: Araba, yürüyüş, bisiklet.
  4. 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 ve longitude, 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çin q 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.

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)

İstanbul'da Restoran Arama

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)

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
  • 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

Ö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)

Taronga Hayvanat Bahçesi'ne yol tarifi

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. Hem panoid hem de cbll 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 ve 0 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)

Street View'daki piramitler