Android için Google Haritalar Amaçları

İ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:

  1. Bir haritayı belirtilen bir konumda ve yakınlaştırma düzeyinde görüntüleyin.
  2. Konumları veya yerleri arayın ve bir haritada görüntüleyin.
  3. 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.
  4. 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ın Intent 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 ve longitude, 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ılan label, bir Dize olarak belirtilmelidir.

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)

İstanbul'daki Restoran Arama

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)

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

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

Taronga Hayvanat Bahçesi'ne yol tarifi

Ü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: hem panoid hem de cbll 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 ve 0 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)

Street View'da piramitler