Otomatik Tamamla (Yeni)

Platform seçin: Android iOS JavaScript Web Hizmeti

Otomatik Tamamlama (Yeni), arama alanını kontrol eden bir metin arama dizesi ve coğrafi sınırlar içeren bir istekle yanıt olarak yer tahminleri döndürür. 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, kullanıcı yazarken sorgu göndererek anında yer ve sorgu tahminleri sağlayabilir.

Örneğin, giriş olarak kısmi bir kullanıcı girişi içeren bir dize (ör. "Sicilian piz") ve arama alanını San Francisco, CA ile sınırlandırarak Otomatik Tamamlama'yı çağırırsınız. 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ının istediği yeri seçmesine yardımcı olmak için kullanıcıya sunulmak üzere tasarlanmıştır. Döndürülen yer tahminlerinden herhangi biri hakkında daha fazla bilgi edinmek için Yer Ayrıntıları (Yeni) isteği gönderebilirsiniz.

Otomatik Tamamlama (Yeni) istekleri

Uygulamanız, FindAutocompletePredictionsRequest nesnesi göndererek PlacesClient.findAutocompletePredictions() işlevini çağırarak otomatik tamamlama API'sinden tahmin edilen yer adlarının ve/veya adreslerin listesini alabilir. Aşağıdaki örnekte PlacesClient.findAutocompletePredictions() işlevine yapılan tam bir çağrı gösterilmektedir.

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, Task içinde bir FindAutocompletePredictionsResponse döndürür. İlgili içeriği oluşturmak için kullanılan FindAutocompletePredictionsResponse en fazla beş kişilik bir liste içerir AutocompletePrediction nesneleri ifade eder. 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 çağırabilirsiniz:

  • getFullText(CharacterStyle) bir yer açıklamasının tam metnini döndürür. Bu, birincil ve ikincil metnin bir birleşimidir. Örnek: "Eyfel Kulesi, Anatole France Caddesi, Paris, Fransa". Ayrıca bu yöntem, CharacterStyle kullanarak açıklamanın aramayla eşleşen bölümlerini istediğiniz bir stille vurgulamanıza olanak tanır. CharacterStyle parametresi isteğe bağlıdır. Vurgulamaya ihtiyacınız yoksa null olarak ayarlayın.
  • 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: "Avenue Anatole France, Paris, Fransa" ve "Sydney, New South Wales".
  • getPlaceId() tahmin edilen yerin yer kimliğini döndürür. Yer kimliği, bir yeri benzersiz şekilde tanımlayan metin tabanlı bir tanımlayıcıdır. Bu kimliği, Placeöğesini daha sonra tekrar almak için kullanabilirsiniz. Otomatik Tamamlama'daki yer kimlikleri hakkında daha fazla bilgi için Yer Ayrıntıları (Yeni) başlıklı makaleyi inceleyin. 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() yer ile arasındaki düz çizgi mesafesini metre cinsinden döndürür istekte belirtilen kaynak.

Gerekli parametreler

  • Sorgu

    Aramanın yapılacağı metin dizesi. Tam kelimeleri ve alt dizeleri, yer adlarını, adresleri ve artı kodlarını belirtin. Otomatik Tamamlama (Yeni) hizmeti, bu dizeye göre olası eşleşmeleri döndürür ve sonuçları algılanan alaka düzeylerine göre sıralar.

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

İsteğe bağlı parametreler

  • Birincil türler

    Yanıtta döndürülen yerleri filtrelemek için kullanılan Tablo A veya Tablo B türlerinden en fazla beş tür değerinin listesi. Bir yerin yanıta dahil edilebilmesi için belirtilen birincil tür değerlerinden biriyle eşleşmesi gerekir.

    Bir yerin, ilişkili Tablo A veya Tablo B türlerinden yalnızca bir birincil türü olabilir. Örneğin, birincil tür "mexican_restaurant" veya "steak_house" olabilir.

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

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

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

  • Ü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, sınırı Almanya ve Fransa ile sınırlayın:

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

    countries parametresini ayarlamak için FindAutocompletePredictionsRequest nesnesini oluştururken setCountries() yöntemini çağırın.

  • Giriş ofseti

    Sorgudaki imleç konumunu gösteren sıfır tabanlı Unicode karakter ofseti. İmlecin konumu, döndürülen tahminleri etkileyebilir. Boşsa varsayılan olarak emin olmanız gerekir.

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

  • Konum yanlılığı veya konum kısıtlaması

    Konum sapması 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 bir 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 kullanarak FindAutocompletePredictionsRequest nesnesini oluşturabilirsiniz.

    • Konum kısıtlaması

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

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

    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 0,0 ile 50000,0 arasında (bu değerler dahil) olmalıdır. 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 hiçbir sonuç döndürmez.

    • Dikdörtgen, çapraz olarak karşı karşıya duran iki low ve high noktası olarak temsil edilen bir enlem-boylam görüntü alanıdır. Görüntü alanı kapalı bir bölge olarak kabul edilir. 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 ise görüntü alanı tek bir 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ş bir 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 FindAutocompletePredictionsRequest nesnesini oluştururken setOrigin() yöntemini çağırın.

  • 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. Bazı önemli istisnalar dışında, çoğu ccTLD kodu ISO 3166-1 kodlarıyla aynıdır. Ö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 yasaya göre sonuçları etkileyebilir.

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

  • 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 oturumda birden fazla sorgu ve ardından 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 otomatik tamamlama oturumları için oturum jetonlarını kullanmanızı öneririz (Bir parçayı yerleştirdiğinizde veya bir intent kullanarak otomatik tamamlamayı başlattığınızda API bu işlemi otomatik olarak yapar).

    Otomatik Tamamlama, her oturumu tanımlamak için bir AutocompleteSessionToken kullanır. 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 kullanarak FindAutocompletePredictionsRequest nesnesini oluşturabilirsiniz.

    Daha fazla bilgi için Oturum jetonları bölümüne bakın.

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 önyargısı, API'nin sonuçları önyargılı hale getirmek için cihazın IP adresini kullanmasıdır. Arama yapılacak bir alanı belirtmek için isteğe bağlı olarak konum kısıtlaması veya konum yanlılığı'nı kullanabilirsiniz ancak ikisini birden kullanamazsınız.

Konum kısıtlaması, aranacak alanı belirtir. Belirtilen dışındaki sonuçlar alanı döndürülmez. Aşağıdaki örnekte, isteği San Francisco merkezli 5.000 metre yarıçaplı dairesel bir konum kısıtlamasıyla sınırlamak için konum kısıtlaması kullanılı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")
            .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 kullanma

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ın

İsteğe origin parametresini dahil ettiğinizde, enlem ve boylam koordinatlarıyla birlikte API, başlangıç noktasından hedefe doğru (ör. getDistanceMeters()) seçin. 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. Harita göstermek istiyorsanız Google haritası olmalıdır. Otomatik Tamamlama (Yeni) hizmetinden gelen tahminleri harita olmadan gösterdiğinizde arama alanı/sonuçlarla satır içi olarak gösterilen Google logosunu eklemeniz gerekir. Örneğin, Daha fazla bilgi için bkz. Google logosunu görüntüleme ve ilişkilendirmeleri.