Place Autocomplete

Koleksiyonlar ile düzeninizi koruyun İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Platform seçin: Android iOS JavaScript Web Hizmeti

Android için Yerler SDK'sındaki otomatik tamamlama hizmeti, kullanıcı arama sorgularına yanıt olarak yer tahminlerini döndürür. Kullanıcı yazdıkça otomatik tamamlama hizmeti; işletmeler, adresler, artı kodları ve önemli noktalar gibi yerler için öneriler sunar.

Otomatik doldurma özelliğini uygulamanıza aşağıdaki şekillerde ekleyebilirsiniz:

Otomatik tamamlama widget'ı ekleme

Otomatik tamamlama widget'ı, yerleşik otomatik tamamlama işlevine sahip bir arama iletişim kutusudur. Kullanıcı arama terimlerini girdiğinde, widget seçilebilecek tahmin edilen yerlerin listesini sunar. Kullanıcı bir seçim yaptığında, uygulamanızın seçili yerle ilgili ayrıntıları almak için kullanabileceği bir Place örneği döndürülür.

Otomatik tamamlama widget'ını uygulamanıza eklemek için iki seçeneğiniz vardır:

1. Seçenek: AutocompleteSupportFragment öğesini yerleştirme

Uygulamanıza AutocompleteSupportFragment eklemek için aşağıdaki adımları uygulayın:

  1. Etkinliğinizin XML düzenine bir parça ekleyin.
  2. Etkinliğinize veya parçanıza bir dinleyici ekleyin.

Bir etkinliğe AutocompleteSupportFragment ekleme

Bir etkinliğe AutocompleteSupportFragment eklemek için XML düzenine yeni bir parça ekleyin. Örnek:

<fragment android:id="@+id/autocomplete_fragment"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:name="com.google.android.libraries.places.widget.AutocompleteSupportFragment"
  />
  • Varsayılan olarak parçanın sınırı veya arka planı yoktur. Tutarlı bir görsel görünüm sağlamak için parçayı CardView gibi başka bir düzen öğesinin içine yerleştirin.
  • Otomatik tamamlama parçasını kullanıyorsanız ve onActivityResult öğesini geçersiz kılmanız gerekiyorsa super.onActivityResult yöntemini çağırmanız gerekir. Aksi takdirde parça düzgün çalışmaz.

Etkinliğe PlaceSelection Dinleyici ekleme

PlaceSelectionListener, kullanıcının seçimine yanıt olarak bir yeri döndürür. Aşağıdaki kod, parçaya referans oluşturmayı ve AutocompleteSupportFragment dinleyicinizi eklemeyi göstermektedir:

Java


    // Initialize the AutocompleteSupportFragment.
    AutocompleteSupportFragment autocompleteFragment = (AutocompleteSupportFragment)
        getSupportFragmentManager().findFragmentById(R.id.autocomplete_fragment);

    // Specify the types of place data to return.
    autocompleteFragment.setPlaceFields(Arrays.asList(Place.Field.ID, Place.Field.NAME));

    // Set up a PlaceSelectionListener to handle the response.
    autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() {
        @Override
        public void onPlaceSelected(@NonNull Place place) {
            // TODO: Get info about the selected place.
            Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
        }


        @Override
        public void onError(@NonNull Status status) {
            // TODO: Handle the error.
            Log.i(TAG, "An error occurred: " + status);
        }
    });

      

Kotlin


    // Initialize the AutocompleteSupportFragment.
    val autocompleteFragment =
        supportFragmentManager.findFragmentById(R.id.autocomplete_fragment)
            as AutocompleteSupportFragment

    // Specify the types of place data to return.
    autocompleteFragment.setPlaceFields(listOf(Place.Field.ID, Place.Field.NAME))

    // Set up a PlaceSelectionListener to handle the response.
    autocompleteFragment.setOnPlaceSelectedListener(object : PlaceSelectionListener {
        override fun onPlaceSelected(place: Place) {
            // TODO: Get info about the selected place.
            Log.i(TAG, "Place: ${place.name}, ${place.id}")
        }

        override fun onError(status: Status) {
            // TODO: Handle the error.
            Log.i(TAG, "An error occurred: $status")
        }
    })

      

2. Seçenek: Otomatik tamamlama etkinliğini başlatmak için bir niyet kullanın

Uygulamanızın farklı bir gezinme akışı kullanmasını istiyorsanız (örneğin, otomatik tamamlama deneyimini bir arama alanından değil, bir simgeden tetiklemek) uygulamanız bir amaç kullanarak otomatik tamamlamayı başlatabilir.

Otomatik tamamlama widget'ını bir amaç kullanarak başlatmak için şu adımları uygulayın:

  1. Niyet oluşturmak için istediğiniz Autocomplete modunu ileterek Autocomplete.IntentBuilder özelliğini kullanın. Amaç, istek kimliğini tanımlayan bir istek kodu iletilerek startActivityForResult çağrısı yapılmalıdır.
  2. Seçilen yeri almak için onActivityResult geri çağırmasını geçersiz kılın.

Otomatik tamamlama amacı oluşturun

Aşağıdaki örnekte, otomatik tamamlama widget'ını bir amaç olarak başlatmak amacıyla Autocomplete.IntentBuilder kullanılması amaçlanmıştır:

Java


    private static int AUTOCOMPLETE_REQUEST_CODE = 1;

    // Set the fields to specify which types of place data to
    // return after the user has made a selection.
    List<Place.Field> fields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

    // Start the autocomplete intent.
    Intent intent = new Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields)
        .build(this);
    startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);

      

Kotlin


    private val AUTOCOMPLETE_REQUEST_CODE = 1

    // Set the fields to specify which types of place data to
    // return after the user has made a selection.
    val fields = listOf(Place.Field.ID, Place.Field.NAME)

    // Start the autocomplete intent.
    val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields)
        .build(this)
    startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE)

      

Otomatik tamamlama widget'ını başlatmak için bir amaç kullanırken yer paylaşımlı veya tam ekran görüntüleme modları arasından seçim yapabilirsiniz. Aşağıdaki ekran görüntüleri her bir görüntüleme modunu gösterir:

Yer paylaşımı modunda görüntülendiğinde, otomatik tamamlama widget&#39;ı çağrı kullanıcı arayüzünün üzerine bindirilmiş olarak görünür.
Şekil 1: OVERLAY modunda otomatik tamamlama widget'ı
Tam ekran modunda görüntülenirken otomatik tamamlama widget&#39;ı tüm ekranı doldurur.
Şekil 2: Widget'ı tam ekran modunda otomatik tamamlama

onActivityResult geri çağırmasını geçersiz kıl

Kullanıcı bir yer seçtiğinde bildirim almak için uygulamanız, aşağıdaki örnekte gösterildiği gibi amacınız için ilettiğiniz istek kodunu kontrol ederek etkinliğin onActivityResult() parametresini geçersiz kılmalıdır.

Java


@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
        if (resultCode == RESULT_OK) {
            Place place = Autocomplete.getPlaceFromIntent(data);
            Log.i(TAG, "Place: " + place.getName() + ", " + place.getId());
        } else if (resultCode == AutocompleteActivity.RESULT_ERROR) {
            // TODO: Handle the error.
            Status status = Autocomplete.getStatusFromIntent(data);
            Log.i(TAG, status.getStatusMessage());
        } else if (resultCode == RESULT_CANCELED) {
            // The user canceled the operation.
        }
        return;
    }
    super.onActivityResult(requestCode, resultCode, data);
}

      

Kotlin


override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    if (requestCode == AUTOCOMPLETE_REQUEST_CODE) {
        when (resultCode) {
            Activity.RESULT_OK -> {
                data?.let {
                    val place = Autocomplete.getPlaceFromIntent(data)
                    Log.i(TAG, "Place: ${place.name}, ${place.id}")
                }
            }
            AutocompleteActivity.RESULT_ERROR -> {
                // TODO: Handle the error.
                data?.let {
                    val status = Autocomplete.getStatusFromIntent(data)
                    Log.i(TAG, status.statusMessage ?: "")
                }
            }
            Activity.RESULT_CANCELED -> {
                // The user canceled the operation.
            }
        }
        return
    }
    super.onActivityResult(requestCode, resultCode, data)
}

      

Programatik olarak yer tahminleri alma

Otomatik tamamlama widget'ı tarafından sağlanan kullanıcı arayüzüne alternatif olarak özel bir arama kullanıcı arayüzü oluşturabilirsiniz. Bunu yapmak için uygulamanızın yer tahminlerini programatik olarak alması gerekir. Uygulamanız, otomatik tamamlama API'sinden PlacesClient.findAutocompletePredictions() çağırarak aşağıdaki parametrelere sahip bir FindAutocompletePredictionsRequest nesnesi ileterek tahmini yer adlarının ve/veya adreslerin bir listesini alabilir:

  • Zorunlu: Kullanıcı tarafından yazılan metni içeren query dizesi.
  • Önerilir: Faturalandırma amacıyla, bir kullanıcı aramasının sorgu ve seçim aşamalarını ayrı bir oturumda gruplandıran AutocompleteSessionToken. Oturum, kullanıcı bir sorgu yazmaya başladığında başlar ve bir yer seçtiğinde sona erer.
  • Önerilen: Sonuçları belirtilen bölgeyle sınırlamak için enlem ve boylam sınırlarını belirten bir RectangularBounds nesnesi.
  • İsteğe bağlı: Sonuçların sınırlandırılması gereken ülkeyi veya ülkeleri belirten iki veya daha fazla iki harfli ülke kodu (ISO 3166-1 Alpha-2).
  • İsteğe bağlı: Sonuçları belirtilen yer türüyle sınırlamak için kullanabileceğiniz bir TypeFilter. Aşağıdaki yer türleri desteklenir:

    • TypeFilter.GEOCODE – İşletmeler yerine yalnızca coğrafi kodlama sonuçlarını döndürür. Belirtilen konumun belirsiz olabileceği sonuçları netleştirmek için bu isteği kullanın.
    • TypeFilter.ADDRESS – Yalnızca tam adresi içeren otomatik tamamlama sonuçlarını döndürür. Bu türü, kullanıcının tam olarak belirtilen bir adresi aradığını biliyorsanız kullanın.
    • TypeFilter.ESTABLISHMENT – Yalnızca işletme olan yerleri döndürür.
    • TypeFilter.REGIONS – Yalnızca aşağıdaki türlerden biriyle eşleşen yerleri döndürür:

      • LOCALITY
      • SUBLOCALITY
      • POSTAL_CODE
      • COUNTRY
      • ADMINISTRATIVE_AREA_LEVEL_1
      • ADMINISTRATIVE_AREA_LEVEL_2
    • TypeFilter.CITIES – Yalnızca LOCALITY veya ADMINISTRATIVE_AREA_LEVEL_3 ile eşleşen sonuçları döndürür.

  • İsteğe bağlı: İstek için kaynak konumunu belirten bir LatLng. setOrigin() çağırdığınızda hizmet, yanıttaki her otomatik tamamlama tahmini için belirtilen kaynaktan metre (distanceMeters) uzaklık döndürür.

Yer türleri hakkında bilgi için yer türleri kılavuzuna bakın.

Aşağıdaki örnekte, PlacesClient.findAutocompletePredictions() çağrısının tamamı gösterilmektedir.

Java


    // Create a new token for the autocomplete session. Pass this to FindAutocompletePredictionsRequest,
    // and once again when the user makes a selection (for example when calling fetchPlace()).
    AutocompleteSessionToken token = AutocompleteSessionToken.newInstance();

    // Create a RectangularBounds object.
    RectangularBounds bounds = RectangularBounds.newInstance(
        new LatLng(-33.880490, 151.184363),
        new LatLng(-33.858754, 151.229596));
    // Use the builder to create a FindAutocompletePredictionsRequest.
    FindAutocompletePredictionsRequest request = FindAutocompletePredictionsRequest.builder()
        // Call either setLocationBias() OR setLocationRestriction().
        .setLocationBias(bounds)
        //.setLocationRestriction(bounds)
        .setOrigin(new LatLng(-33.8749937,151.2041382))
        .setCountries("AU", "NZ")
        .setTypeFilter(TypeFilter.ADDRESS)
        .setSessionToken(token)
        .setQuery(query)
        .build();

    placesClient.findAutocompletePredictions(request).addOnSuccessListener((response) -> {
        for (AutocompletePrediction prediction : response.getAutocompletePredictions()) {
            Log.i(TAG, prediction.getPlaceId());
            Log.i(TAG, prediction.getPrimaryText(null).toString());
        }
    }).addOnFailureListener((exception) -> {
        if (exception instanceof ApiException) {
            ApiException apiException = (ApiException) exception;
            Log.e(TAG, "Place not found: " + apiException.getStatusCode());
        }
    });

      

Kotlin


    // Create a new token for the autocomplete session. Pass this to FindAutocompletePredictionsRequest,
    // and once again when the user makes a selection (for example when calling fetchPlace()).
    val token = AutocompleteSessionToken.newInstance()

    // Create a RectangularBounds object.
    val bounds = RectangularBounds.newInstance(
        LatLng(-33.880490, 151.184363),
        LatLng(-33.858754, 151.229596)
    )
    // Use the builder to create a FindAutocompletePredictionsRequest.
    val request =
        FindAutocompletePredictionsRequest.builder()
            // Call either setLocationBias() OR setLocationRestriction().
            .setLocationBias(bounds)
            //.setLocationRestriction(bounds)
            .setOrigin(LatLng(-33.8749937, 151.2041382))
            .setCountries("AU", "NZ")
            .setTypeFilter(TypeFilter.ADDRESS)
            .setSessionToken(token)
            .setQuery(query)
            .build()
    placesClient.findAutocompletePredictions(request)
        .addOnSuccessListener { response: FindAutocompletePredictionsResponse ->
            for (prediction in response.autocompletePredictions) {
                Log.i(TAG, prediction.placeId)
                Log.i(TAG, prediction.getPrimaryText(null).toString())
            }
        }.addOnFailureListener { exception: Exception? ->
            if (exception is ApiException) {
                Log.e(TAG, "Place not found: " + exception.statusCode)
            }
        }

      

API bir Taskda FindAutocompletePredictionsResponse döndürür. FindAutocompletePredictionsResponse, tahmini yerleri temsil eden AutocompletePrediction nesnelerinin listesini içerir. Sorguya ve filtre ölçütlerine karşılık gelen bilinen bir yer yoksa liste boş olabilir.

Tahmin edilen her yer için, yer ayrıntılarını almak üzere aşağıdaki yöntemleri arayabilirsiniz:

  • getFullText(CharacterStyle) bir yer açıklamasının tam metnini döndürür. Bu, birincil ve ikincil metnin bir kombinasyonudur. Örnek: "Eyfel Kulesi, Avenue Anatole France, Paris, France&quot. Bu yöntem, CharacterStyle özelliğini kullanarak açıklamanın tercih ettiğiniz stilde aramayla eşleşen bölümlerini vurgulamanıza da olanak tanır. CharacterStyle parametresi isteğe bağlıdır. Vurgulamaya gerek yoksa boş olarak ayarlayın.
  • getPrimaryText(CharacterStyle) bir yeri açıklayan ana metni döndürür. Bu genellikle yerin adıdır. Örnekler: &"Eyfel Kulesi" ve "123 Pitt Street".
  • getSecondaryText(CharacterStyle), bir yer açıklamasının yan metnini döndürür. Bu, örneğin otomatik tamamlama tahminlerini gösterirken ikinci bir satır olarak yararlıdır. Örnekler: "Cadde Anatole Fransa, Paris, Fransa" ve "Sidney, Yeni Güney Galler".
  • getPlaceId(), tahmin edilen yerin yer kimliğini döndürür. Yer kimliği, bir yeri benzersiz şekilde tanımlayan metin tanımlayıcısıdır. Daha sonra Place nesnesini tekrar almak için bu kimliği kullanabilirsiniz. Android için Yerler SDK'sındaki yer kimlikleriyle ilgili daha fazla bilgi edinmek için Yer Ayrıntıları'na bakın. Yer kimlikleri hakkında genel bilgiler için Yer kimliğine genel bakış konusuna bakın.
  • getPlaceTypes() bu yer ile ilişkili yer türlerinin listesini döndürür.
  • getDistanceMeters(), bu yer ile istekte belirtilen kalkış noktası arasındaki düz çizgi mesafesini döndürür.

Oturum jetonları

Oturum jetonları, kullanıcının otomatik tamamlama aramasının sorgu ve seçim aşamalarını, faturalandırma amacıyla ayrı bir oturumda gruplandırır. Oturum, kullanıcı bir sorgu yazmaya başladığında başlar ve bir yer seçtiğinde sona erer. Her oturumda birden fazla sorgu ve devamında tek bir yer seçilebilir. Oturum sona erdiğinde jeton artık geçerli olmaz. Uygulamanız her oturum için yeni bir jeton oluşturmalıdır. Tüm programatik otomatik tamamlama oturumları için oturum jetonları kullanmanızı öneririz (bir parça yerleştirdiğinizde veya bir niyetle otomatik tamamlamayı başlattığınızda API bunu otomatik olarak halleder).

Android için Yerler SDK'sı, her bir oturumu tanımlamak için bir AutocompleteSessionToken kullanır. Uygulamanız, her yeni oturumda yeni bir oturum jetonu iletmeli, ardından aynı jetonu bir Yer Kimliği ile birlikte ileterek kullanıcının seçtiği yerin Yer Ayrıntılarını almak için sonraki fetchPlace() çağrısında bulunmalıdır.

Oturum jetonları hakkında daha fazla bilgi edinin.

Otomatik tamamlama sonuçlarını kısıtla

Otomatik tamamlama sonuçlarını belirli bir coğrafi bölgeyle sınırlayabilir ve/veya sonuçları bir ya da daha fazla yer türüne veya en fazla beş ülkeye göre filtreleyebilirsiniz. Bu sınırlamaları otomatik tamamlama etkinliği, AutocompleteSupportFragment ve programatik otomatik tamamlama API'lerine uygulayabilirsiniz.

Sonuçları kısıtlamak için aşağıdakileri yapın:

  • Tanımlanan bölgedeki sonuçları tercih etmek için setLocationBias() çağrısı yapın (tanımlanmış bölgenin dışından gelen bazı sonuçlar döndürülebilir).
  • Tanımlanan bölgedeki sonuçları yalnızca göstermek için setLocationRestriction() çağrısı yapın (yalnızca tanımlanan bölgedeki sonuçlar döndürülür).
  • Yalnızca belirli bir yer türüyle uyumlu sonuçları döndürmek için setTypeFilter() yöntemini çağırın (örneğin, TypeFilter.ADDRESS etiketini belirtmek yalnızca kesin bir adres içeren sonuçlar döndürür).
  • En fazla beş ülke içinde sonuç döndürmek için setCountries() numaralı telefonu arayın. Ülkeler, ISO 3166-1 Alpha-2 ile uyumlu iki karakterli ülke kodu olarak iletilmelidir.

Belirli bir bölgeyle ilgili ön yargı sonuçları

Otomatik tamamlama sonuçlarına belirli bir coğrafi bölgeyle ilgili ağırlık vermek için setLocationBias() çağrısı yaparak bir RectangularBounds iletin. Aşağıdaki kod örneğinde, otomatik tamamlama önerilerinin Avustralya'nın Sidney bölgesine ağırlık vermesi için bir parça örneğinde setLocationBias() çağrısı yapılmaktadır.

Java


    autocompleteFragment.setLocationBias(RectangularBounds.newInstance(
        new LatLng(-33.880490, 151.184363),
        new LatLng(-33.858754, 151.229596)));

      

Kotlin


    autocompleteFragment.setLocationBias(
        RectangularBounds.newInstance(
            LatLng(-33.880490, 151.184363),
            LatLng(-33.858754, 151.229596)
        )
    )

      

Sonuçları belirli bir bölgeyle kısıtlama

Otomatik tamamlama sonuçlarını belirli bir coğrafi bölgeyle sınırlamak için RectangularBounds ifadesini ileterek setLocationRestriction() işlevini çağırın. Aşağıdaki kod örneğinde, otomatik tamamlama önerilerinin Avustralya, Sidney bölgesine ağırlık verilmesi için bir parça örneğinde setLocationRestriction() çağrısı yapılmaktadır.

Java


    autocompleteFragment.setLocationRestriction(RectangularBounds.newInstance(
        new LatLng(-33.880490, 151.184363),
        new LatLng(-33.858754, 151.229596)));

      

Kotlin


    autocompleteFragment.setLocationRestriction(
        RectangularBounds.newInstance(
            LatLng(-33.880490, 151.184363),
            LatLng(-33.858754, 151.229596)
        )
    )

      

Not: Bu kısıtlama yalnızca tüm rotalara uygulanır. Dikdörtgen sınırların dışında bulunan yapay sonuçlar, konum kısıtlamasıyla çakışan bir rota temel alınarak döndürülebilir.

Sonuçları yer türüne göre filtrele

Otomatik tamamlama isteğinden elde edilen sonuçları, yalnızca belirli bir yer türü döndürecek şekilde kısıtlayabilirsiniz. Sonuçlar kısıtlanmazsa tüm türler döndürülür. Genel olarak yalnızca tek bir türe izin verilir. Bunun istisnası, GEOCODE ve ESTABLISHMENT türlerini güvenli bir şekilde karıştırabilmenizdir. Ancak bunun etkisi, tür belirtmemekle aynıdır.

Otomatik tamamlama sonuçlarını belirli bir yer türüne göre filtrelemek için setTypeFilter() yöntemini kullanarak filtreyi kullanılacak filtreyi seçin. Ardından filtreyi bir parçaya veya amaca iletin.

Aşağıdaki kod örneği, yalnızca tam adresli sonuçları döndüren bir filtre oluşturmak için AutocompleteSupportFragment üzerinde setTypeFilter() çağrısında bulunur.

Java


    autocompleteFragment.setTypeFilter(TypeFilter.ADDRESS);

      

Kotlin


    autocompleteFragment.setTypeFilter(TypeFilter.ADDRESS)

      

Aşağıdaki kod örneği, yalnızca tam adresle sonuç veren bir filtre ayarlamak için bir IntentBuilder üzerinde setTypeFilter() çağrısını gösterir.

Java


    Intent intent = new Autocomplete.IntentBuilder(
        AutocompleteActivityMode.FULLSCREEN, fields)
        .setTypeFilter(TypeFilter.ADDRESS)
        .build(this);
    startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE);

      

Kotlin


    val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields)
        .setTypeFilter(TypeFilter.ADDRESS)
        .build(this)
    startActivityForResult(intent, AUTOCOMPLETE_REQUEST_CODE)

      

Yer türleri hakkında bilgi için yer türleri kılavuzuna bakın.

Sonuçları ülkeye göre filtrele

Otomatik tamamlama sonuçlarını en fazla beş ülkeye göre filtrelemek için ülke kodunu ayarlamak üzere setCountries() yöntemini arayın. Ardından filtreyi bir parçaya veya amaca iletin. Ülkeler, ISO 3166-1 Alpha-2 ile uyumlu iki karakterli ülke kodu olarak iletilmelidir.

Aşağıdaki kod örneğinde, yalnızca belirtilen ülkelerdeki sonuçları döndüren bir filtre oluşturmak amacıyla AutocompleteSupportFragment üzerinde setCountries() aranır.

Java


    autocompleteFragment.setCountries("AU", "NZ");

      

Kotlin


    autocompleteFragment.setCountries("AU", "NZ")

      

Kullanım sınırları

Android için Places SDK'sını da içeren Places API kullanımınız artık maksimum gün sayısı (QPD) sayısıyla sınırlı değildir. Ancak aşağıdaki kullanım sınırları geçerliliğini korur:

  • Hız sınırı 100 istek/sn'dir (QPS). Aynı projenin kimlik bilgilerini kullanan tüm uygulamalar için istemci taraflı ve sunucu taraflı isteklerin toplamı olarak hesaplanır.

İlişkilendirmeleri uygulamanızda gösterme

  • Uygulamanız otomatik olarak otomatik tamamlama hizmetini kullanıyorsa, kullanıcı arayüzünüz 'Google Tarafından Desteklenmektedir' ilişkilendirmesini görüntülemeli veya Google markalı bir harita üzerinde görünmelidir.
  • Uygulamanız otomatik tamamlama widget'ını kullanıyorsa ek bir işleme gerek yoktur (varsayılan olarak gerekli ilişkilendirme görüntülenir).
  • Bir yeri kimliğe göre aldıktan sonra ek yer bilgileri alıp gösterirseniz üçüncü taraf atıflarını da göstermeniz gerekir.

Daha fazla bilgi için ilişkilendirmeler ile ilgili belgelere bakın.

Otomatik Yer Tamamlama optimizasyonu

Bu bölümde, Otomatik Yer Tamamlama hizmetinden en iyi şekilde yararlanmanıza yardımcı olacak en iyi uygulamalar açıklanmaktadır.

Aşağıda bazı genel yönergeler verilmiştir:

  • Çalışan bir kullanıcı arayüzü geliştirmenin en hızlı yolu, Maps JavaScript API Otomatik tamamlama widget'ını, Android için Yerler SDK'sını Otomatik tamamlama widget'ı veya iOS için Yerler SDK'sının kullanılmasıdır Otomatik tamamlama kullanıcı arayüzü kontrolü
  • Temel Otomatik Tamamlama veri alanları ile ilgili en baştan itibaren bilgi edinin.
  • Konuma ağırlık verme ve konum kısıtlama alanları isteğe bağlıdır ancak otomatik tamamlama performansını önemli ölçüde etkileyebilir.
  • API bir hata döndürüyorsa uygulamanızın hatalardan etkilenmemesi için hata işleme yöntemini kullanın.
  • Seçim olmadığında uygulamanızın işlediğinden ve kullanıcılara devam etmek için bir yol sağladığından emin olun.

Maliyet optimizasyonu ile ilgili en iyi uygulamalar

Temel maliyet optimizasyonu

Otomatik Yer Tamamlama hizmetini kullanmanın maliyetini optimize etmek için, yalnızca ihtiyacınız olan yer veri alanlarını döndürmek üzere Yer Ayrıntıları ve Yer Otomatik Tamamlama widget'larındaki alan maskelerini kullanın.

Gelişmiş maliyet optimizasyonu

İstek Başına Fiyatlandırma'ya erişmek ve Yer Ayrıntıları yerine seçilen yer hakkında Geocoding API sonuçlarını istemek için Yer Otomatik Tamamlama özelliğini programatik olarak uygulamayı düşünün. Aşağıdaki koşulların her ikisi de sağlanıyorsa Geocoding API ile eşlenen İstek Başına fiyatlandırma, Oturum Başına (oturum tabanlı) fiyatlandırmadan daha uygun maliyetlidir:

  • Kullanıcının seçtiği yerin yalnızca enlem/boylam veya adresine ihtiyacınız varsa Geocoding API, bu bilgileri bir Place Details çağrısından daha kısa süre için sağlar.
  • Kullanıcılar, ortalama dört veya daha az otomatik tamamlama tahmini isteği içinde bir otomatik tamamlama tahmini seçerse İstek Başına fiyatlandırma, Oturum Başına fiyatlandırmadan daha uygun maliyetli olabilir.
İhtiyaçlarınıza uygun Otomatik Yer Tamamlama uygulamasını seçme konusunda yardım almak için aşağıdaki soruya verdiğiniz yanıta karşılık gelen sekmeyi seçin.

Uygulamanız, seçilen tahminin adresi ve enlem/boylamı dışında bir bilgi gerektiriyor mu?

Evet, daha fazla ayrıntı gerekiyor

Yer ayrıntılarıyla oturuma dayalı Yer Otomatik Tamamlama özelliğini kullanın.
Uygulamanız yer adı, işletme durumu veya çalışma saatleri gibi Yer Ayrıntıları gerektirdiğinden, Yer Otomatik Tamamlama uygulamanızda, toplam talep tutarının 0,017 ABD doları olan oturum başına maliyetiyle birlikte bir oturum jetonu (programatik olarak veya JavaScript, Android ya da iOS widget'ları kullanılarak uygulanması gerekir.1}}

Widget uygulaması
Oturum yönetimi otomatik olarak
JavaScript, Android veya iOS widget'larına yerleştirilir. Buna, hem seçilen tahmindeki Yer Otomatik Tamamlama istekleri hem de Yer Ayrıntıları isteği dahildir. Yalnızca ihtiyacınız olan yer verisi alanlarını istediğinizden emin olmak için fields parametresini belirttiğinizden emin olun.

Programatik uygulama
Yer Otomatik Tamamlama isteklerinizle birlikte bir oturum jetonu kullanın. Seçilen tahmin hakkında Yer Ayrıntıları isterken aşağıdaki parametreleri ekleyin:

  1. Otomatik Yer Tamamlama yanıtındaki yer kimliği
  2. Otomatik Yer Tamamlama isteğinde kullanılan oturum jetonu
  3. İhtiyacınız olan yer veri alanlarını belirten fields parametresi

Hayır, yalnızca adres ve konum gerekiyor

Coğrafi kodlama API'si, Yer Otomatik Tamamlama kullanımınızın performansına bağlı olarak uygulamanız için Yer Ayrıntıları'ndan daha uygun maliyetli bir seçenek olabilir. Her uygulamanın Otomatik Tamamlama verimliliği, kullanıcıların neler girdiğine, uygulamanın kullanıldığı yere ve performans optimizasyonu en iyi uygulamalarının uygulanıp uygulanmadığına bağlı olarak değişir.

Aşağıdaki soruyu yanıtlamak için, uygulamanızda bir otomatik yer tamamlama tahmini seçmeden önce kullanıcının ortalama kaç karakter girdiğini analiz edin.

Kullanıcılarınız ortalama olarak dört veya daha az istekte Yer Otomatik Tamamlama tahmini mi seçiyor?

Evet

Yer Otomatik Tamamlama'yı oturum jetonları olmadan programatik olarak uygulayın ve seçilen yer tahmininde Geocoding API'yi çağırın.
Geocoding API, istek başına 0,005 ABD doları karşılığında adresleri ve enlem/boylam koordinatlarını sunar. Dört Yer Otomatik Tamamlama - İstek Başına istek yapmanın maliyeti 0,01132 ABD dolarıdır. Bu nedenle, dört yer isteğinin ve seçilen yer tahminiyle ilgili bir Geocoding API çağrısının toplam maliyeti, oturum başına 0,017 ABD doları tutarındaki Oturum Başına Otomatik Tamamlama fiyatından daha düşük 0,01632 ABD doları olur.1

Kullanıcılarınızın aradıkları tahminleri daha da az sayıda karakterle almalarına yardımcı olmak için performansla ilgili en iyi uygulamalardan yararlanabilirsiniz.

Hayır

Yer ayrıntılarıyla oturuma dayalı Yer Otomatik Tamamlama özelliğini kullanın.
Kullanıcı, Yer Otomatik Tamamlama tahminini Oturum Başına fiyatlandırma maliyetini aşmadan önce yapmayı beklediğiniz ortalama istek sayısı olduğundan, Otomatik Yer Tamamlama uygulamanızda hem Yer Otomatik Tamamlama istekleri hem de ilişkili Yer Ayrıntıları isteği için toplam oturum başına 0,017 ABD doları oturum başına bir oturum jetonu kullanılmalıdır.1

Widget uygulaması
Oturum yönetimi otomatik olarak JavaScript, Android veya iOS widget'larına yerleştirilir. Buna, hem seçilen tahmindeki Yer Otomatik Tamamlama istekleri hem de Yer Ayrıntıları isteği dahildir. Yalnızca Temel Veri alanları istediğinizden emin olmak için fields parametresini belirttiğinizden emin olun.

Programatik uygulama
Yer Otomatik Tamamlama isteklerinizle birlikte bir oturum jetonu kullanın. Seçilen tahmin hakkında Yer Ayrıntıları isterken aşağıdaki parametreleri ekleyin:

  1. Otomatik Yer Tamamlama yanıtındaki yer kimliği
  2. Otomatik Yer Tamamlama isteğinde kullanılan oturum jetonu
  3. Adres ve geometri gibi Temel Veriler alanlarını belirten fields parametresi

Yer Otomatik Tamamlama isteklerini geciktirebilirsiniz
Kullanıcının ilk üç veya dört karaktere kadar bir Yer Otomatik Tamamlama isteğini geciktirme gibi stratejilerden yararlanarak uygulamanızın daha az istek göndermesini sağlayabilirsiniz. Örneğin, kullanıcı üçüncü karakteri yazdıktan sonra her karakter için Yer Otomatik Tamamlama isteklerinde bulunursa kullanıcı yedi karakter yazar ve bir Geocoding API isteği gönderdiğiniz bir tahmin seçerse toplam maliyet 0,01632 ABD doları olur (4 * 0,00283 ABD doları İstek Başına Otomatik Tamamlama + 0,005 Coğrafi Kodlama).1

Geciken istekler ortalama programatik isteğinizin dörtten az olmasını sağlayabilirse Coğrafi Kodlama API'sı ile verimli Place Otomatik Tamamlama uygulamasıyla ilgili yönergeleri uygulayabilirsiniz. Gecikme istekleri, her yeni tuş vuruşuyla ilgili tahminler görmeyi bekleyebilecek kullanıcı tarafından gecikme olarak algılanabilir.

Kullanıcılarınızın tahminini daha az karakterle almasına yardımcı olmak için performansla ilgili en iyi uygulamalardan yararlanabilirsiniz.


  1. Burada listelenen maliyetler ABD doları cinsindendir. Tam fiyatlandırma bilgileri için lütfen Google Haritalar Platformu Faturalandırması sayfasına bakın.

Performansla ilgili en iyi uygulamalar

Aşağıdaki yönergelerde, Yer Otomatik Tamamlama performansını optimize etmenin yolları açıklanmaktadır:

  • Otomatik Yer Tamamlama uygulamanıza ülke kısıtlamaları, konum ağırlıklandırma ve (programatik uygulamalar için) dil tercihini ekleyin. Widget'larda dil tercihi gerekmez. Çünkü bunlar, kullanıcının tarayıcısından veya mobil cihazından dil tercihlerini seçerler.
  • Yer Otomatik Tamamlama özelliği bir haritaya eşlik ediyorsa, konumun görünümüne harita görüntü alanına göre karar verebilirsiniz.
  • Bir kullanıcının Otomatik tamamlama tahminlerinden birini seçmediği durumlarda, genellikle bu tahminlerin istenen sonuç adresi olmaması nedeniyle daha alakalı sonuçlar elde etmek için orijinal kullanıcı girişini yeniden kullanabilirsiniz:
    • Kullanıcının yalnızca adres bilgilerini girmesini bekliyorsanız Geocoding API çağrısında, orijinal kullanıcı girişini yeniden kullanın.
    • Kullanıcının ada veya adrese göre belirli bir yer için sorgu girmesini bekliyorsanız Yer Bulma isteği kullanın. Sonuçların yalnızca belirli bir bölgede olması bekleniyorsa konum ön yargısını kullanın.
    Geocoding API'sini kullanmanın en iyi olduğu diğer senaryolar şunlardır:
    • Avustralya, Yeni Zelanda veya Kanada dışındaki ülkelerde alt kuruluş adresleri giren kullanıcılar. Örneğin, ABD'deki adres "123 Bowdoin St #456, Boston MA, USA", Otomatik Tamamlama tarafından desteklenmez. (Otomatik tamamlama yalnızca Avustralya, Yeni Zelanda ve Kanada'daki alt tesis adreslerini destekler. Bu üç ülkede desteklenen adres biçimleri şunlardır: "9/321 Pitt Street, Sidney, Yeni Güney Galler, Avustralya" veya "14/19 Langana Avenue, Browns Bay, Auckland, Yeni Zelanda&); ya da &&t;145-112 Renfrew Dr, Markham, Ontario, Kanada
    • New York'ta "23-30 29th St, Queens" gibi yol segmenti öneklerini içeren adresler girerek veya Hawai'deki Kauai Adası'nda yer alan "47-380 Kamehameha Hwy, Kaneohe" gibi kullanıcılar

Sorun giderme

Uygulamanızın çeşitli hataları oluşsa da genellikle uygulamanızın karşılaşabileceği hataların çoğu yapılandırma hatalarından (örneğin, yanlış API anahtarının kullanılması veya API anahtarının yanlış yapılandırılması) ya da kota hatalarından (uygulamanız kotasını aştı) kaynaklanır. Kotalar hakkında daha fazla bilgi için Kullanım Sınırları bölümüne bakın.

Otomatik tamamlama denetimleri kullanılırken gerçekleşen hatalar onActivityResult() geri çağırmasında döndürülür. Sonucun durum mesajını almak için Autocomplete.getStatus() numaralı telefonu arayın.