Place Autocomplete

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 tahminde bulunmanızı sağlar. Kullanıcı yazarken otomatik tamamlama hizmeti, şunun gibi yerler için öneriler döndürüyor: adresler, artı kodları ve noktaları anlatacağım.

Otomatik tamamlamayı uygulamanıza aşağıdaki şekillerde ekleyebilirsiniz:

Otomatik tamamlama widget'ı ekleme

Otomatik tamamlama widget'ı, yerleşik otomatik tamamlama özelliğine sahip bir arama iletişim kutusudur işlevi görür. Kullanıcı arama terimlerini girdiğinde widget, kullanıcılara tahmin edilen yerler var. Kullanıcı bir seçim yaptığında, Place döndürülmesini sağlar. Uygulamanız bu örneği kullanarak seçili yer.

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

1. Seçenek: AutocompleteSupportFragment 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 işleyici ekleyin.

Bir etkinliğe AutocompleteSupportFragment ekleme

Bir etkinliğe AutocompleteSupportFragment eklemek için XML düzeni. Örneğin:

<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 kenarlığı veya arka planı yoktur. Size tutarlı bir görsel görünüm sağlar, parçayı başka bir düzenin içine yerleştirme öğe gibi CardView öğesini seçin.
  • Otomatik tamamlama parçasını kullanıyorsanız ve bunu geçersiz kılmanız gerekiyorsa onActivityResult, super.onActivityResult çağrısı yapmanız gerekir, aksi takdirde parçası düzgün çalışmaz.

Bir etkinliğe PlaceSelectionListener ekleme

PlaceSelectionListener, kullanıcının seçim. Aşağıdaki kod, parçaya bir başvuru oluşturmayı gösterir ve AutocompleteSupportFragment cihazınıza bir işleyici ekleniyor:

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")
        }
    })

      

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);
        }
    });

      

2. Seçenek: Otomatik tamamlama etkinliğini başlatmak için bir amaç kullanma

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

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

  1. Autocomplete.IntentBuilder kullanın kullanarak istenen Autocomplete modu ileterek intent oluşturun.
  2. Etkinlik sonucu başlatıcı tanımlama registerForActivityResult amacı başlatmak ve kullanıcının seçtiği yeri işlemek için kullanılabilecek tahminde bulunabilirsiniz.

Otomatik tamamlama amacı oluşturun

Aşağıdaki örnekte Autocomplete.IntentBuilder otomatik tamamlama widget'ını intent olarak başlatma isteği oluşturmak için:

Kotlin




    // 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)
    startAutocomplete.launch(intent)

      

Java



    // 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);
    startAutocomplete.launch(intent);

      

Otomatik tamamlama widget'ını başlatmak için bir intent kullanırken şu seçeneklerden birini belirleyebilirsiniz: yer paylaşımlı veya tam ekran görüntü modları. Aşağıdaki ekran görüntülerinde, görüntüleme moduna geçebilir:

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

Amaç sonucu için bir geri çağırma kaydedin

Kullanıcı bir yer seçtiğinde bildirim almak için bir Etkinliği başlatan ve aynı zamanda şunları işleyen registerForActivityResult() başlatıcısı aşağıdaki örnekte gösterildiği gibidir. Kullanıcı bir tahmin seçtiyse sonuç nesnesinde bulunan amaç içinde sunulur. Amaçlarından Geliştirme yöntemi olan Autocomplete.IntentBuilder tarafından Autocomplete.getPlaceFromIntent(), Yer nesnesini bundan ayıklayabilir.

Kotlin



private val startAutocomplete =
    registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
        if (result.resultCode == Activity.RESULT_OK) {
            val intent = result.data
            if (intent != null) {
                val place = Autocomplete.getPlaceFromIntent(intent)
                Log.i(
                    TAG, "Place: ${place.name}, ${place.id}"
                )
            }
        } else if (result.resultCode == Activity.RESULT_CANCELED) {
            // The user canceled the operation.
            Log.i(TAG, "User canceled autocomplete")
        }
    }

      

Java


private final ActivityResultLauncher<Intent> startAutocomplete = registerForActivityResult(
        new ActivityResultContracts.StartActivityForResult(),
        result -> {
            if (result.getResultCode() == Activity.RESULT_OK) {
                Intent intent = result.getData();
                if (intent != null) {
                    Place place = Autocomplete.getPlaceFromIntent(intent);
                    Log.i(TAG, "Place: ${place.getName()}, ${place.getId()}");
                }
            } else if (result.getResultCode() == Activity.RESULT_CANCELED) {
                // The user canceled the operation.
                Log.i(TAG, "User canceled autocomplete");
            }
        });

      

Yer tahminlerini programatik olarak alma

otomatik tamamlama widget'ı. Bunun için uygulamanızın yer tahminleri alması gerekir daha fazla bilgi edindiniz. Uygulamanız, tahmin edilen yer adlarının bir listesini ve/veya otomatik tamamlama API'sinden belirli bir adres için PlacesClient.findAutocompletePredictions(), doğru FindAutocompletePredictionsRequest nesnesini tanımlayın:

  • Zorunlu: Kullanıcının yazdığı metni içeren bir query dizesi.
  • Önerilen: A AutocompleteSessionToken, her bir kullanıcı aramasının sorgu ve seçim aşamalarını oturum açmanız gerekir. Oturum, kullanıcı yazmaya başladığında başlar ve bir yer seçtiğinde sona erer.
  • Önerilen: RectangularBounds (enlem ve boylam sınırlarını belirten bir nesnedir ve sonuçları belirtilen bölgeye giriş yapın.
  • İsteğe bağlı: Bir veya daha fazla iki harfli ülke kodları (ISO 3166-1) Alfa-2), sonuçların gösterilmesi gereken ülke veya ülkeleri belirtir. kısıtlanmış durumda.
  • İsteğe bağlı: A TypeFilter, Bu seçeneği, sonuçları belirtilen yer türüyle sınırlamak için kullanabilirsiniz. İlgili içeriği oluşturmak için kullanılan şu yer türleri desteklenir:

    • TypeFilter.GEOCODE – Yalnızca coğrafi kodlama sonuçlarını döndürür, işletmeler. Belirtilen konum belirsiz olabilir.
    • TypeFilter.ADDRESS – Yalnızca tam adres. Kullanıcının bir tam olarak belirtilmiş adres.
    • TypeFilter.ESTABLISHMENT – Yalnızca şu var olan yerleri döndürür: işletmeler.
    • TypeFilter.REGIONS – Yalnızca şunlardan biriyle eşleşen yerleri döndürür: şu türler:

    • LOCALITY

    • SUBLOCALITY

    • POSTAL_CODE

    • COUNTRY

    • ADMINISTRATIVE_AREA_LEVEL_1

    • ADMINISTRATIVE_AREA_LEVEL_2

    • TypeFilter.CITIES – Yalnızca LOCALITY veya ADMINISTRATIVE_AREA_LEVEL_3.

  • İsteğe bağlı: İsteğin kaynak konumunu belirten bir LatLng. Aradığınızda setOrigin(), hizmet, belirtilen mesafeden mesafeyi metre (distanceMeters) cinsinden döndürür başlangıç noktası için kullanılır.

Yer türleri hakkında daha fazla bilgi için kılavuza bakın: yer türler olarak tanımlar.

Aşağıdaki örnekte PlacesClient.findAutocompletePredictions().

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")
            .setTypesFilter(listOf(PlaceTypes.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}")
            }
        }

      

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")
            .setTypesFilter(Arrays.asList(PlaceTypes.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());
        }
    });

      

API, FindAutocompletePredictionsResponse içinde Task) FindAutocompletePredictionsResponse aşağıdakileri içeren bir liste içerir: AutocompletePrediction nesneleri ifade eder. Seçim yoksa liste boş olabilir bilinen yerlerle ilgili sonuçları görüntüleyebilirsiniz.

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

  • getFullText(CharacterStyle) bir yer açıklamasının tam metnini döndürür. Bu, iki faktörün de birincil ve ikincil metin. Örnek: "Eyfel Kulesi, Avenue Anatole France, Paris, Fransa". Buna ek olarak bu yöntem, retrospektif toplantısının arama ile seçtiğiniz bir stille eşleşen açıklama CharacterStyle. CharacterStyle parametresi isteğe bağlıdır. İşaretlemezseniz boş olarak ayarlayın herhangi bir vurguya ihtiyacınız olacak.
  • getPrimaryText(CharacterStyle) bir yeri açıklayan ana metni döndürür. Bu genellikle alan adının yer. Örnekler: "Eyfel Kulesi" ve "İstiklal Caddesi No:123".
  • getSecondaryText(CharacterStyle) bir yer açıklamasının yan metnini döndürür. Bu, proje hedefinizin Örneğin, otomatik tamamlama tahminlerini gösterirken ikinci satır olarak. Örnekler: "Ameka Anatole France, Paris, Fransa" ve "Sidney, Yeni Güney Galler".
  • getPlaceId() tahmin edilen yerin yer kimliğini döndürür. Yer kimliği, metin biçimindedir ve bilgileri görüntülemek için kullanabileceğiniz, bir yeri benzersiz şekilde tanımlayan tanımlayıcı "the" Place daha sonra tekrar deneyin. Şu konumdaki yer kimlikleri hakkında daha fazla bilgi: Android için Yerler SDK'sı hakkında daha fazla bilgi için Yer Ayrıntılar. Genel hakkında bilgi için Yer Kimliği genel bakış bölümüne bakın.
  • getPlaceTypes() bu yerle ilişkili yer türlerinin listesini döndürür.
  • getDistanceMeters() bu yer ile arasındaki düz çizgi mesafeyi metre cinsinden döndürür istekte belirtilen kaynak.

Oturum jetonları

Oturum jetonları, kullanıcının otomatik tamamlamasının sorgu ve seçim aşamalarını gruplandırır faturalandırma amacıyla ayrı bir oturumda arama yapabilir. Oturum, Kullanıcı bir sorgu yazmaya başlar ve yer seçtiğinde sona erer. Her oturum birden fazla sorgu ve ardından tek bir yer seçimi bulunabilir. Bir oturumda jeton artık geçerli değildir; uygulamanız yeni bir jeton oluşturmalıdır anlamına gelir. Tüm programatik işlemler için oturum jetonları kullanmanızı öneririz. otomatik tamamlama oturumları (bir parçayı yerleştirdiğinizde veya API bunu otomatik olarak halleder).

Android için Yerler SDK'sı bir AutocompleteSessionToken tanımlamanız gerekir. Uygulamanız, aşağıdaki durumlarda yeni bir oturum jetonu geçirmelidir: sonra da aynı jetonu bir Yer Kimliği ile birlikte iletir. paydaşlara iletmek için fetchPlace() simgesini tıklayın.

Oturum hakkında daha fazla bilgi jetonlar.

Otomatik tamamlama sonuçlarını sınırla

Otomatik tamamlama sonuçlarını belirli bir coğrafi bölgeyle sınırlandırabilirsiniz ve/veya sonuçları bir veya daha fazla yer türüne ya da en fazla beş ülkeye göre filtreleyebilirsiniz. Siz bu kısıtlamaları otomatik tamamlama etkinliğine uygulayabilir, AutocompleteSupportFragment ve programatik otomatik tamamlama API'leri içerir.

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

  • Tanımlanan bölgedeki sonuçları tercih etmek için setLocationBias() işlevini çağırın. (tanımlanan bölgenin dışından bazı sonuçlar yine de döndürülebilir).
  • Yalnızca tanımlanan bölgedeki sonuçları göstermek için şu çağrıyı yapın: setLocationRestriction() (yalnızca tanımlanan bölgedeki sonuçlar sorulması gerekir.)
  • Yalnızca belirli bir yer türüne uygun sonuçları döndürmek için setTypesFilter() (örneğin, TypeFilter.ADDRESS belirtmek şu sonucu döndürür: kesin adres içeren sonuçlar) için yalnızca Google Ads'i kullanabilirsiniz.
  • Yalnızca en fazla beş ülke içindeki sonuçları döndürmek için şu numarayı arayın: setCountries() Ülkeler iki karakterli, ISO 3166-1 olarak iletilmelidir Alpha-2 ile uyumlu ülke girin.

Belirli bir bölge için yanlı sonuçlar

Otomatik tamamlama sonuçlarına belirli bir coğrafi bölge eklemek için şu numarayı arayın: setLocationBias(), başarılı RectangularBounds Aşağıdaki kod örneğinde bir parçada setLocationBias() çağrısı gösterilmektedir Örneğin, otomatik tamamlama önerilerini Avustralya'nın Sidney bölgesine göre uyarlayacak.

Kotlin



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

      

Java


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

      

Sonuçları belirli bir bölgeyle sınırlandırın

Otomatik tamamlama sonuçlarını belirli bir coğrafi bölgeyle kısıtlamak için şu numarayı arayın: setLocationRestriction(), başarılı RectangularBounds Aşağıdaki kod örneğinde, setLocationRestriction() çağrısı gösterilmektedir parça örneğini Sidney'in bir bölgesine göre şekillendirebilir. Avustralya.

Kotlin



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

      

Java


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

      

Not: Bu kısıtlama yalnızca tüm rotalara uygulanır. Sentetik sonuçlar. dikdörtgen sınırların dışında kalan ve şu anda konum kısıtlamasıyla çakışıyor.

Sonuçları yer türlerine veya koleksiyon türüne göre filtreleyin

Bir otomatik tamamlama isteğinin sonuçlarını, yalnızca bir belirli bir yer türünü seçin. Yer türlerini veya tür koleksiyonunu kullanarak filtre belirleme Yer Türleri başlıklı 1., 2. ve 3. Tablolarda listelenmiştir. Hiçbir şey tüm türler döndürülür.

Otomatik tamamlama sonuçlarını filtrelemek için şunu arayın: setTypesFilter() tıklayın.

Bir tür veya tür koleksiyon filtresi belirtmek için:

  • setTypesFilter() yöntemini çağırın ve Tablo 1'den en fazla beş tür değeri belirtin ve Yer Türleri'nde Tablo 2'yi görebilirsiniz. Tür değerleri: sabitlerle tanımlanır PlaceTypes.

  • setTypesFilter() yöntemini çağırın ve gösterilen Tablo 3'ten bir tür koleksiyonu belirtin Yer Türleri'ne göz atın. Koleksiyon değerleri sabit değerler PlaceTypes ifadesini ekleyin.

    İstekte Tablo 3'ten yalnızca bir türe izin verilir. Bir değeri tablo 1 veya Tablo 2'den değer belirtemezsiniz. Eğer kullanırsanız bir hata oluşur.

Aşağıdaki kod örneği,setTypesFilter() AutocompleteSupportFragment ve birden çok tür değeri belirtir.

Kotlin



    autocompleteFragment.setTypesFilter(listOf("landmark", "restaurant", "store"))

      

Java


    autocompleteFragment.setTypesFilter(Arrays.asList("landmark", "restaurant", "store"));

      

Aşağıdaki kod örneği,setTypesFilter() Yalnızca şuna sahip sonuçları döndüren bir filtre ayarlamak için: AutocompleteSupportFragment bir tür koleksiyonu belirterek tam adresi.

Kotlin



    autocompleteFragment.setTypesFilter(listOf(PlaceTypes.ADDRESS))

      

Java


    autocompleteFragment.setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS, PlaceTypes.ESTABLISHMENT));

      

Aşağıdaki kod örneği,setTypesFilter() IntentBuilder ayarını kullanarak yalnızca kesin adres içeren sonuçları döndüren bir filtre oluşturabilirsiniz. bir tür koleksiyonu belirtmelisiniz.

Kotlin



    val intent = Autocomplete.IntentBuilder(AutocompleteActivityMode.FULLSCREEN, fields)
        .setTypesFilter(listOf(PlaceTypes.ADDRESS))
        .build(this)

      

Java


    Intent intent = new Autocomplete.IntentBuilder(
            AutocompleteActivityMode.FULLSCREEN, fields)
            .setTypesFilter(Arrays.asList(PlaceTypes.ADDRESS))
            .build(this);

      

Sonuçları ülkeye göre filtreleyin

Otomatik tamamlama sonuçlarını en fazla beş ülkeye göre filtrelemek için şu numarayı arayın: setCountries() ülke kodunu ayarlayın. Ardından filtreyi bir parçaya veya amaca iletin. Ülkeler iki karakterli, ISO 3166-1 Alpha-2 uyumlu ülke girin.

Aşağıdaki kod örneği,setCountries() AutocompleteSupportFragment, belirtilen ülkelerde çalışır.

Kotlin



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

      

Java


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

      

Kullanım sınırları

Android için Yerler SDK'sı da dahil olmak üzere Places API'yi kullanımınız Artık günlük maksimum istek sayısı (QPD) ile sınırlı değil. Ancak Aşağıdaki kullanım sınırları hâlâ geçerlidir:

  • Hız sınırı 6.000 QPM'dir (dakika başına istek sayısı). Evet toplam istek sayısı için istemci taraflı ve sunucu tarafı isteklerinin aynı projenin kimlik bilgilerini kullanarak ilgili uygulamalar oluşturabilirsiniz.

İlişkilendirmeleri uygulamanızda gösterme

  • Uygulamanız otomatik tamamlama hizmetini programatik olarak kullanıyorsa kullanıcı arayüzünüz "Google tarafından desteklenmektedir" mesajını veya bir Google markalı harita.
  • Uygulamanızda otomatik tamamlama widget'ı kullanılıyorsa ek bir işlem yapmanız gerekmez (varsayılan olarak gerekli atıf gösterilir).
  • yer ölçütü: Kimliği, siz üçüncü taraf ilişkilendirmelerini de görüntülemelidir.

Daha fazla bilgi için ilişkilendirmeler.

Yer Otomatik Tamamlama optimizasyonu

Bu bölümde Google Ads'den en iyi şekilde yararlanmanıza yardımcı olacak en iyi uygulamalar Otomatik Yer Tamamlama hizmeti.

Bazı genel kurallar şunlardır:

  • Çalışan bir kullanıcı arayüzü geliştirmenin en hızlı yolu Maps JavaScript API Otomatik tamamlama widget'ı, Android için Yerler SDK'sı Otomatik tamamlama widget'ı, veya Yerler SDK'sı Otomatik tamamlama kullanıcı arayüzü kontrolü
  • Temel Yer Otomatik Tamamlama özelliği hakkında bilgi sahibi olun veri alanlarını en baştan iki kez kontrol edin.
  • Konuma ağırlık verme ve konum kısıtlama alanları isteğe bağlıdır, ancak otomatik tamamlama performansı üzerinde önemli bir etkisi vardır.
  • Uygulamanızın sorunsuz şekilde düşmesini sağlamak için hata işlemeyi kullanın bir hata döndürür.
  • Uygulamanızın seçim yapılmadığı durumlarda bunu yaptığından ve kullanıcılara seçeneğini tıklayın.

Maliyet optimizasyonuyla ilgili en iyi uygulamalar

Temel maliyet optimizasyonu

Otomatik Yer Tamamlama özelliğini kullanmanın maliyetini optimize etmek için hizmeti kullanmak için, Yer Ayrıntıları ve Yer Otomatik Tamamlama widget'larındaki alan maskelerini kullanarak yalnızca yer veri alanlarını kullanın.

Gelişmiş maliyet optimizasyonu

İstek Başına fiyatlandırma özelliğine erişmek ve seçilen yer hakkında Yer Ayrıntıları yerine Coğrafi Kodlama API'si sonuçlarını istemek için Otomatik Yer Tamamlama özelliğinin programatik olarak uygulanmasını göz önünde bulundurun. Aşağıdaki koşulların her ikisi de karşılanırsa İstek Başına Fiyatlandırma, Geocoding API ile eşleştirilen Oturum Başına (oturuma dayalı) fiyatlandırmadan daha uygun maliyetlidir:

  • Yalnızca kullanıcının seçtiği yerin enlem/boylam veya adresine ihtiyaç duyarsanız Coğrafi Kodlama API'si bu bilgileri Yer Ayrıntısı çağrısından daha düşük bir ücret karşılığında sunar.
  • Kullanıcılar ortalama dört veya daha az Otomatik Tamamlama tahmin 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 uyan Otomatik Yer Tamamlama uygulamasını seçme konusunda yardım için aşağıdaki soruya vereceğiniz yanıta karşılık gelen sekmeyi seçin.

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

Evet, daha fazla ayrıntı gerekiyor

Yer Ayrıntıları ile oturuma dayalı Otomatik Yer Tamamlama özelliğini kullanın.
. Uygulamanız; yer adı, işletme durumu veya çalışma saatleri gibi Yer Ayrıntıları gerektirdiğinden, Otomatik Yer Tamamlama uygulamanız programatik olarak veya JavaScript, Android ya da iOS widget'larında yerleşik olarak bulunan bir oturum jetonu kullanmalıdır.Bu kullanım için toplamda 0,017 ABD doları tutarında oturum başına maliyet ve geçerli Yer Verileri SKU'ları kullanılır.

Widget uygulaması
Oturum yönetimi otomatik olarak JavaScript, Android veya iOS widget'larına eklenir. Buna hem otomatik Yer Tamamlama istekleri hem de seçilen tahmindeki Yer Ayrıntısı isteği dahildir. Yalnızca şu istekte bulunduğunuzdan emin olmak için fields parametresini belirttiğinizden emin olun: yer verisi alanlarını girin.

Programatik uygulama
Otomatik Yer Tamamlama isteklerinizde 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. fields parametresi, İhtiyacınız olan yer verisi alanlarını

Hayır, yalnızca adres ve konum gerekiyor

Otomatik Yer Tamamlama kullanımınızın performansına bağlı olarak Coğrafi Kodlama API'sı, uygulamanız için Yer Ayrıntıları'ndan daha uygun maliyetli bir seçenek olabilir. Her uygulamanın Otomatik Tamamlama verimliliği, hangi kullanıcıların giriş yaptığına, uygulamanın nerede kullanıldığına ve performans optimizasyonuyla ilgili en iyi uygulamaların uygulanıp uygulanmadığına bağlı olarak değişiklik gösterir.

Aşağıdaki soruyu yanıtlamak için, bir kullanıcının uygulamanızda Yer Otomatik Tamamlama tahmini seçmeden önce ortalama kaç karakter yazdığını analiz edin.

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

Evet

Otomatik Yer Tamamlama özelliğini oturum jetonları olmadan programatik olarak uygulayın ve seçilen yer tahmininde Coğrafi Kodlama API'sini çağırın.
. Geocoding API, adresleri ve enlem/boylam koordinatlarını istek başına 0,005 ABD doları karşılığında sunar. Dört adet Otomatik Otomatik Tamamlama - İstek Başına isteği göndermenin maliyeti 0,01132 ABD dolarıdır. Bu nedenle, seçilen yer tahminiyle ilgili dört isteğin toplam maliyeti ve Coğrafi Kodlama API'si çağrısı 0,01632 ABD doları olur. Bu da oturum başına 0,017 ABD doları olan Oturum Başına Otomatik Tamamlama fiyatından daha düşüktür.1

Kullanıcılarınızın aradıkları tahmini daha az karakterle bulmalarına yardımcı olmak için performans en iyi uygulamalarından yararlanmayı düşünebilirsiniz.

Hayır

Yer Ayrıntıları ile oturuma dayalı Otomatik Yer Tamamlama özelliğini kullanın.
. Bir kullanıcı Otomatik Yer Tamamlama tahminini seçmeden önce gerçekleştirmeyi beklediğiniz ortalama istek sayısı Oturum Başına fiyatlandırmayı aştığından, Otomatik Yer Tamamlama özelliğini uygulamanız hem Otomatik Yer Tamamlama istekleri hem de bununla ilişkili Yer Ayrıntısı isteği için bir oturum jetonu kullanarak toplam oturum başına 0,017 ABD doları tutarında maliyet içermelidir.1

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

Programatik uygulama
Otomatik Yer Tamamlama isteklerinizde 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 Veri alanlarını belirten fields parametresi

Yer Otomatik Tamamlama isteklerini ertelemeyi düşünün
Otomatik Yer Tamamlama isteğini, kullanıcı ilk üç veya dört karakteri yazana kadar ertelemek gibi stratejiler kullanarak uygulamanızın daha az istek göndermesini sağlayabilirsiniz. Örneğin, kullanıcı üçüncü karakteri yazdıktan sonra her karakter için Otomatik Tamamlama isteklerinde bulunmak, kullanıcı yedi karakteri yazdıktan sonra bir Coğrafi Kodlama API'si isteği gönderdiğiniz bir tahmin seçerse toplam maliyetin 0,01632 ABD doları (4 * 0,00283 ABD doları Otomatik Tamamlama + 0,005 ABD doları Coğrafi Kodlama) olacağı anlamına gelir.1

İstekleri ertelemek ortalama programatik isteğinizin dörtün altına düşmesine neden oluyorsa Geocoding API ile otomatik yer tamamlama performansı uygulama yönergelerinden yararlanabilirsiniz. İsteklerin geciktirilmesinin, her yeni tuş vuruşunda tahmin görmeyi bekleyen kullanıcılar tarafından gecikme olarak algılanabileceğini unutmayın.

Kullanıcılarınızın aradıkları tahmini daha kısa sürede elde etmelerine 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ırma sayfasına bakın.

Performansla ilgili en iyi uygulamalar

Aşağıdaki yönergelerde Otomatik Yer Tamamlama performansının optimize edilmesi için izlenecek yöntemler açıklanmaktadır:

  • Ülke kısıtlamaları ekleyin, konuma ağırlık verme, Otomatik Yer Tamamlama ayarınıza (programatik uygulamalar için) dil tercihinizi ekleyin bazı ipuçları vereceğim. Dil tercihi yapmanız gerekmez Dil tercihlerini kullanıcının tarayıcısından veya mobil cihazından seçtikleri için, widget'larla
  • Otomatik Yer Tamamlama'ya bir harita eşlik ediyorsa, konumu harita görünümüne göre değiştirebilirsiniz.
  • Kullanıcının Otomatik Tamamlama tahminlerinden birini seçmediği durumlarda, genellikle Bu tahminlerin hiçbiri istenen sonuç adresi olmadığından, orijinal daha alakalı sonuçlar almaya çalışmak için kullanıcı girdisi:
    • Kullanıcının yalnızca adres bilgilerini girmesini bekliyorsanız orijinal kullanıcı girişini yeniden kullanın Geocoding API'ye yapılan bir çağrıda.
    • Kullanıcının ada veya adrese göre belirli bir yer hakkında sorgu girmesini bekliyorsanız Yer Bulma isteği kullanın. Yalnızca belirli bir bölgede sonuç bekleniyorsa konuma ağırlık verme.
    Coğrafi Kodlama API'sini kullanmanın en iyi seçenek olacağı diğer senaryolar şunlardır:
    • Otomatik Yer Tamamlama desteğinin sunulduğu ülkelerdeki alt şirket içi adresleri giren kullanıcılar alt şirket adresleri eksik, ör. Çekya, Estonya ve Litvanya. Örneğin, Çekçe adres "Stroupežnického 3191/17, Praha" Place konumunda kısmi bir tahmin verir Otomatik tamamlama.
    • "23-30 29th St, Queens" gibi yol ön ekleriyle adresler giren kullanıcılar bir listesini oluştur: New York City veya "47-380 Kamehameha Hwy, Kaneohe" bir şehir manzarası var.

Sorun giderme

Çok çeşitli hatalar oluşabilir ancak uygulamanızdaki hataların çoğu genellikle yapılandırma hatalarından kaynaklanır (örneğin, yanlış API anahtarı kullanılmış, API anahtarı yanlış yapılandırılmış) veya kota (uygulamanız kotasını aştı). Kullanım bölümüne bakın Daha fazlası için sınırlar kotalar hakkında bilgi edinin.

Otomatik tamamlama denetimleri kullanılırken ortaya çıkan hatalar onActivityResult() geri arama. Durumu öğrenmek için Autocomplete.getStatus() numaralı telefonu arayın mesajı görebilirsiniz.