Otomatik Tamamla (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Otomatik tamamlama (Yeni) işleviyle ilgili yer tahminlerini döndürür. metin arama dizesi ve coğrafi sınırlar içeren bir isteğe verilen yanıt kontrol panelidir. Otomatik tamamlama eşleşebilir girişteki tam sözcükler ve alt dizeler üzerinde çalışır; yer adlarını, adresleri ve artı kodları kullanabilirsiniz. Uygulamanız sorgu gönderebilir hareket hâlindeki yer ve sorgu tahminlerine yer verir.

Örneğin, Otomatik Tamamlama'yı bir giriş olarak "Sicilian piz" adlı kısmi kullanıcı girişini ve arama alanını içeren dize San Francisco, Kaliforniya ile sınırlıdır. Sonra da yanıtta bir yer listesi arama dizesi ve arama alanıyla eşleşen tahminler (ör. restoran) bir bülten var.

Döndürülen yer tahminleri, kullanıcıya yardımcı olmak için gösterilecek şekilde tasarlanmıştır seçmelerine yardımcı oluyor. Bir Yer Ayrıntıları oluşturabilirsiniz (Yeni) daha fazla almak için istek gönderin yer tahminleri hakkında bilgi edinemez.

Otomatik tamamlama (Yeni) istekleri

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. Aşağıdaki örnekte PlacesClient.findAutocompletePredictions().

Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();
LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);
final FindAutocompletePredictionsRequest autocompletePlacesRequest =
    FindAutocompletePredictionsRequest.builder()
            .setQuery("Sicilian piz")
            .setRegionCode("ES")
            .setLocationRestriction(circle)
            .build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
    .addOnSuccessListener(
        (response) -> {
            List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
          }
    ).addOnFailureListener(
        exception -> {
            Log.e(TAG, "some exception happened" + exception.getMessage());
        })
    );
.

Otomatik tamamlama (Yeni) yanıtları

API, FindAutocompletePredictionsResponse Task. İlgili içeriği oluşturmak için kullanılan FindAutocompletePredictionsResponse en fazla beş kişilik 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 aramayla eşleşen ve seçtiğiniz bir stile sahip açıklama CharacterStyle. CharacterStyle parametresi isteğe bağlıdır. İhtiyacınız yoksa null değerine ayarlayın. farklı alanları seçebilirsiniz.
  • 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: Otomatik tamamlama, bkz. Yer Ayrıntıları (Yeni). Genel hakkında bilgi için Yer Kimliği genel bakış bölümüne bakın.
  • getTypes() 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.

Gerekli parametreler

  • Sorgu

    Arama yapılacak metin dizesi. Tam kelimeleri ve alt dizeleri belirtin, Yer adları, adresler ve artı kodları. Otomatik tamamlama (Yeni) hizmeti bu dizeye göre aday eşleşmeleri döndürür ve sonuçları şuna göre sıralar: alaka düzeyi için kritik önem taşır.

    Sorgu parametresini ayarlamak için setQuery() çağrısını yapın yöntemini çağırın.FindAutocompletePredictionsRequest

İsteğe bağlı parametreler

  • Birincil türler

    Türlerden en fazla beş tür türü değeri içeren bir liste A Tablosu veya Tablo B yanıtta döndürülen yerleri filtrelemek için kullanılır. Bir yerin yanıta dahil edilmesi için belirtilen birincil tür değerlerinden biriyle eşleşmesi gerekir.

    Bir yerin, türlerden yalnızca tek bir birincil türü olabilir A Tablosu veya Tablo B ile ilişkili gerçekleşebilir. Örneğin, birincil tür "mexican_restaurant" veya "steak_house".

    Aşağıdaki durumlarda istek INVALID_REQUEST hatasıyla reddedilir:

    • Beşten fazla tür belirtilmiş.
    • Tanınmayan türler belirtilmiş.

    Birincil türler parametresini ayarlamak için setTypesFilter() parametresini çağırın yöntemini çağırın.FindAutocompletePredictionsRequest

  • Ülkeler

    En fazla 15 karakterlik bir liste olarak belirtilen, belirtilen ülkeler listesindeki sonuçları dahil et ccTLD ("üst düzey alan") iki karakterli değerler sunmalıdır. Atlanırsa yanıta herhangi bir kısıtlama uygulanmaz. Örneğin, Almanya ve Fransa ile sınırlandırmak için:

    Hem locationRestriction hem de includedRegionCodes öğesini belirtirseniz sonuçlar, iki ayarın kesişim alanında bulunur.

    Ülke parametresini ayarlamak için setCountries() parametresini çağırın yöntemini çağırın.FindAutocompletePredictionsRequest

  • Giriş ofseti

    Sorgudaki imlecin konumunu gösteren sıfır tabanlı Unicode karakter farkı. İmleç konumu, hangi tahminlerin döndürüleceğini etkileyebilir. Boşsa varsayılan olarak emin olmanız gerekir.

    Giriş ofseti parametresini ayarlamak için setInputOffset() parametresini çağırın yöntemini çağırın.FindAutocompletePredictionsRequest

  • Konum sapması veya konum kısıtlaması

    Konum ağırlığı veya konum kısıtlaması belirleyebilirsiniz kullanın. Konum kısıtlamasını, sonuçlarda bulunması gereken bölge ve konum sapması sonuçların yakınında olması gereken bölgeyi belirtmelidir. Aralarındaki temel fark ile, belirtilen bölgenin dışındaki sonuçlar yine de döndürülebilir.

    • Konum ön yargısı

      Aranacak alanı belirtir. Bu konum bir kısıtlama değil, önyargı işlevi görür. Dolayısıyla, yine de belirtilen alanın dışındakiler döndürülebilir.

      Konum önyargısı parametresini ayarlamak için setLocationBias() işlevini çağırın yöntemini çağırın.FindAutocompletePredictionsRequest

    • Konum kısıtlaması

      Aranacak alanı belirtir. Belirtilen alanın dışındaki sonuçlar geri döndü.

      Konum kısıtlaması parametresini ayarlamak için setLocationRestriction() parametresini çağırın yöntemini çağırın.FindAutocompletePredictionsRequest

    Konum sapmasını veya konum kısıtlama bölgesini dikdörtgen görünüm veya daire şeklinde.

    • Bir daire, merkez noktası ve metre cinsinden yarıçapıyla tanımlanır. Yarıçap şunun arasında olmalıdır: 0,0 ve 50000,0 (bu değerler dahil) Varsayılan değer 0,0'dır. Konum kısıtlaması için yarıçapı 0,0'dan büyük bir değere ayarlamanız gerekir. Aksi takdirde istek, sonuç yok.

    • Dikdörtgen, iki şekilde gösterilen enlem-boylam görünümüdür low ve high noktanın karşısında çapraz olarak olmalıdır. Görüntü alanı, yani kendi sınırını içerir. Enlem sınırları -90 ile 90 derece (her ikisi de dahil) arasında olmalı ve boylam sınırları -180 ile 180 derece (her iki değer dahil) arasında olmalıdır:

      • low = high olursa, görüntü alanı bu tek noktadan oluşur.
      • Eğer low.longitude > high.longitude, boylam aralığı ters çevrilmiş (görüntü alanı 180 derecelik boylam çizgisini geçer).
      • low.longitude = -180 derece ve high.longitude = 180 derece ise görüntü alanı tüm boylamları içerir.
      • low.longitude = 180 derece ve high.longitude = -180 derece ise boylam aralığı boş.

      Hem low hem de high doldurulmalı ve gösterilen kutu doldurulmalıdır boş bırakılamaz. Boş görüntü alanı hatayla sonuçlanır.

  • Köken

    Hedefe olan düz çizgi uzaklığının hesaplanacağı başlangıç noktası (getDistanceMeters() kullanılarak erişilir). Bu değer çıkarıldığında, düz çizgi mesafesi döndürülmez. Şu şekilde belirtilmelidir: enlem ve boylam koordinatları:

    Kaynak parametresini ayarlamak için setOrigin() komutunu çağırın yöntemini çağırın.FindAutocompletePredictionsRequest

  • Bölge kodu

    Yanıtı biçimlendirmek için kullanılan bölge kodu (adres biçimlendirmesi dahil) ccTLD ("üst düzey alan") iki karakterlik değer. Çoğu ccTLD kodu, ISO 3166-1 kodlarıyla aynıdır. bazı önemli istisnalarla birlikte. Örneğin, Birleşik Krallık'ın ccTLD'si "uk" (.co.uk), ISO 3166-1 kodu "gb" ise (teknik olarak "Büyük Britanya ve Kuzey İrlanda Birleşik Krallığı").

    Geçersiz bir bölge kodu belirtirseniz API bir INVALID_ARGUMENT döndürür. hatası. Parametre, geçerli yasalara göre sonuçları etkileyebilir.

    Bölge kodu parametresini ayarlamak için setRegionCode() yöntemini çağırın yöntemini çağırın.FindAutocompletePredictionsRequest

  • Oturum jetonu

    Oturum jetonları, etkinlikleri izleyen kullanıcı tarafından oluşturulmuş Aramaları "oturumlar" olarak otomatik tamamlama (yeni). Otomatik tamamlama, şunları yapmak için oturum jetonlarını kullanır: Kullanıcı otomatik tamamlama aramasının sorgu ve seçim aşamalarını ayrı bir oturumda . 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).

    Otomatik Tamamlama, 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. fetchPlace()'e yapılan bir sonraki çağrı simgesini tıklayın.

    Oturum jetonu parametresini ayarlamak için setSessionToken() parametresini çağırın yöntemini çağırın.FindAutocompletePredictionsRequest

    Daha fazla bilgi için bkz. Oturum jetonları.

Otomatik tamamlama (Yeni) örnekleri

Konum kısıtlaması ve konum ağırlıklandırmasını kullan

Otomatik Tamamlama (Yeni) özelliği varsayılan olarak IP ağırlıklandırmayı kullanır: Arama alanını kontrol edebilir. IP'ye ağırlık vermede API, cihazdaki değerleri doğru şekilde ayırın. İsterseniz konum bilgilerini de kullanabilirsiniz. veya konum ön yargısı var ancak ikisine de basarak aranacak bir alan belirtin.

Konum kısıtlaması, aranacak alanı belirtir. Belirtilen dışındaki sonuçlar alanı döndürülmez. Aşağıdaki örnekte, isteği şununla sınırlamak için konum kısıtlaması kullanılmaktadır: merkezli 5.000 metre yarıçapındaki dairesel konum kısıtlaması:

Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();

LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);

final FindAutocompletePredictionsRequest autocompletePlacesRequest =
    FindAutocompletePredictionsRequest.builder()
            .setQuery("Amoeba")
            .setLocationRestriction(circle)
            .build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
    .addOnSuccessListener(
        (response) -> {
            List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
          }
    ).addOnFailureListener(
        exception -> {
            Log.e(TAG, "some exception happened" + exception.getMessage());
        })
    );

Konum ön yargısında, konum bir sapma görevi görür ve bu da belirtilen konumun dışındaki sonuçlar da dahil olmak üzere, belirtilen konum döndürülebilir. alanı. Sonraki örnek, konum yanlılığını kullanmak için önceki isteği değiştirir:

Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();

LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);

final FindAutocompletePredictionsRequest autocompletePlacesRequest =
    FindAutocompletePredictionsRequest.builder()
            .setQuery("Amoeba")
            .setLocationBias(circle)
            .build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
    .addOnSuccessListener(
        (response) -> {
            List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
          }
    ).addOnFailureListener(
        exception -> {
            Log.e(TAG, "some exception happened" + exception.getMessage());
        })
    );

Birincil türleri kullan

Bir aşağıdaki tabloda listelenen belirli bir türde olma isteği: A ve Tablo B. Tekliflerinizi otomatikleştirmek ve optimize etmek için en fazla beş değerden oluşan bir dizidir. Atlanırsa tüm türler döndürülür.

Aşağıdaki örnekte "Futbol" sorgu dizesi belirtiliyor ve birincil sonuçları tür kuruluşlarla kısıtlamak için türler parametresi "sporting_goods_store":

Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();

final List<Place.Field> primaryTypes = Arrays.asList("sporting_goods_store");

LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);

final FindAutocompletePredictionsRequest autocompletePlacesRequest =
    FindAutocompletePredictionsRequest.builder()
            .setQuery("Soccer")
            .setIncludedPrimaryTypes(primaryTypes)
            .setLocationBias(circle)
            .build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
    .addOnSuccessListener(
        (response) -> {
            List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
          }
    ).addOnFailureListener(
        exception -> {
            Log.e(TAG, "some exception happened" + exception.getMessage());
        })
    );

Birincil türler parametresini çıkarırsanız sonuçlar, kuruluş "athletic_field" gibi, istemeyebileceğiniz bir türde.

Kaynağı kullan

İsteğe origin parametresini dahil ettiğinizde, enlem ve boylam koordinatlarıyla birlikte API, başlangıç noktasından hedefe doğru (ör. getDistanceMeters()). Bu örnekte başlangıç noktası San Francisco'nun merkezi olarak ayarlanmaktadır:

Places.initializeWithNewPlacesApiEnabled(context, apiKey);
final List<Field> placeFields = getPlaceFields();

LatLng center = new LatLng(37.7749, -122.4194);
CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000);

final FindAutocompletePredictionsRequest autocompletePlacesRequest =
    FindAutocompletePredictionsRequest.builder()
            .setQuery("Amoeba")
            .setOrigin(center)
            .setLocationRestriction(circle)
            .build());
placesClient.findAutocompletePredictions(autoCompletePlacesRequest)
    .addOnSuccessListener(
        (response) -> {
            List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions();
          }
    ).addOnFailureListener(
        exception -> {
            Log.e(TAG, "some exception happened" + exception.getMessage());
        })
    );

İlişkilendirmeler

Otomatik Tamamlama (Yeni) özelliğini harita olmadan da kullanabilirsiniz. Eğer harita gösteriyorsanız bu bir Google haritası olmalıdır. Şuradaki tahminleri görüntülediğinizde içermeyen Otomatik Tamamlama (Yeni) hizmetini arama alanında/sonuçlarında satır içinde görüntülenen Google logosunu içermelidir. Örneğin, Daha fazla bilgi için bkz. Google logosunu görüntüleme ve ilişkilendirmeleri.