Autouzupełnianie (nowość)

Autouzupełnianie (nowość) zwraca podpowiedzi dotyczące miejsc w odpowiedź na żądanie, która zawiera ciąg wyszukiwania tekstowego i granice geograficzne które kontrolują obszar wyszukiwania. Autouzupełnianie może dopasować na pełnych słowach i podłańcuchach danych wejściowych, rozpoznawanie nazw miejsc, adresów oraz kodów plus. Aplikacja może wysyłać zapytania które użytkownik wpisuje, i udostępnia wyniki wyszukiwania w czasie rzeczywistym.

Na przykład wywołasz autouzupełnianie, używając jako danych wejściowych ciąg znaków zawierający częściowe dane wprowadzone przez użytkownika, „piz sycylijski” z obszarem wyszukiwania ograniczona do San Francisco, Kalifornia. Odpowiedź zawiera listę miejsc. podpowiedzi pasujące do wyszukiwanego hasła i obszaru wyszukiwania, np. restauracja o nazwie „Sycylijska pizza”.

Zwracane prognozy dotyczące miejsc mają być prezentowane użytkownikowi, aby ułatwić ich przy wyborze odpowiedniego miejsca. Możesz dodać szczegóły miejsca (Nowość) poproś o więcej informacje o wszystkich zwróconych prognozach miejsc.

Żądania autouzupełniania (nowe)

Aplikacja może uzyskać listę przewidywanych nazw miejsc lub z interfejsu API autouzupełniania przez wywołanie PlacesClient.findAutocompletePredictions(), zaliczając FindAutocompletePredictionsRequest obiektu. Poniższy przykład zawiera pełne wywołanie 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());
        })
    );

Autouzupełnianie (nowe) odpowiedzi

Interfejs API zwraca błąd FindAutocompletePredictionsResponse w Task. FindAutocompletePredictionsResponse zawiera listę do pięciu AutocompletePrediction obiektów reprezentujących przewidywane miejsca. Jeśli na liście nie ma elementów, lista może być pusta znane miejsce odpowiadające zapytaniu i kryteriom filtra.

W przypadku każdego przewidywanego miejsca możesz wywołać następujące metody, aby je pobrać szczegóły:

  • getFullText(CharacterStyle) zwraca pełny tekst opisu miejsca. To połączenie atrybutów tekst główny i dodatkowy. Przykład: „Wieża Eiffla, aleja Anatole'a France'a, Paryż, Francja”. Ta metoda pozwala dodatkowo wyróżnić sekcje pasującego do wyszukiwania i wybranego stylu. Użyj CharacterStyle. Parametr CharacterStyle jest opcjonalny. Jeśli nie potrzebujesz, ustaw go na wartość null podświetlenia.
  • getPrimaryText(CharacterStyle) zwraca główny tekst opisujący miejsce. Jest to zwykle nazwa miejsce. Przykłady: „Wieża Eiffla” i „123 Pitt Street”.
  • getSecondaryText(CharacterStyle) zwraca tekst opisu miejsca podmiotu zależnego. Jest to przydatne, gdy: jako przykład w drugiej linii przy wyświetlaniu podpowiedzi autouzupełniania. Przykłady: „A Avenue Anatole France, Paris, France” i „Sydney, Nowa Południowa Walia”.
  • getPlaceId() zwraca identyfikator przewidywanego miejsca. Identyfikator miejsca jest ciągiem tekstowym niepowtarzalny identyfikator miejsca, za pomocą którego można pobrać Place możesz zobaczyć go później. Więcej informacji o identyfikatorach miejsc w Autouzupełnianie, patrz Szczegóły miejsca (Nowość). Ogólne informacji o identyfikatorach miejsc znajdziesz w artykule na temat identyfikatora miejsca .
  • getTypes() zwraca listę typów miejsc powiązanych z tym miejscem.
  • getDistanceMeters() zwraca odległość prostą w metrach między tym miejscem a pochodzenie określone w żądaniu.

Wymagane parametry

  • Zapytanie

    Ciąg tekstowy, który ma być przeszukiwany. określać pełne słowa i podłańcuchy; nazwy miejsc, adresy i kody plus. Usługa autouzupełniania (nowa) zwraca dopasowania kandydatów na podstawie tego ciągu i ustala kolejność wyników na podstawie ich postrzeganej trafności.

    Aby ustawić parametr zapytania, wywołaj metodę setQuery(). podczas tworzenia obiektu FindAutocompletePredictionsRequest.

Parametry opcjonalne

  • Typy główne

    Lista maksymalnie 5 wartości typów z typów Tabela A lub Tabela B służy do filtrowania miejsc zwróconych w odpowiedzi. Miejsce musi pasować do jednej z określonych wartości typu podstawowego, aby można było uwzględnić je w odpowiedzi.

    Miejsce może mieć tylko jeden typ główny z typów Tabela A lub tabeli B powiązanej z nim. Na przykład typem głównym może być "mexican_restaurant" lub "steak_house"

    Żądanie zostanie odrzucone z powodu błędu INVALID_REQUEST, jeśli:

    • Określono więcej niż 5 typów.
    • Wszystkie nierozpoznane typy są określone.

    Aby ustawić parametr głównych typów, wywołaj setTypesFilter(). podczas tworzenia obiektu FindAutocompletePredictionsRequest.

  • Kraje

    Uwzględnij tylko wyniki z określonych krajów, jeśli lista zawiera maksymalnie 15 krajów ccTLD („domena najwyższego poziomu”) dwuznakowych. Jeśli go pominiesz, do odpowiedzi nie będą stosowane żadne ograniczenia. Przykład: aby ograniczyć regiony do Niemiec i Francji:

    Jeśli podasz zarówno locationRestriction, jak i includedRegionCodes, będą znajdować się w obszarze przecięcia obu ustawień.

    Aby ustawić parametr krajów, wywołaj setCountries(). podczas tworzenia obiektu FindAutocompletePredictionsRequest.

  • Przesunięcie danych wejściowych

    Przesunięcie znaków Unicode liczone od zera, które wskazuje pozycję kursora w zapytaniu. Pozycja kursora może wpływać na wyświetlane podpowiedzi. Jeśli jest pusta, stosowana jest domyślna wartość długości zapytania.

    Aby ustawić parametr przesunięcia wejściowego, wywołaj funkcję setInputOffset() podczas tworzenia obiektu FindAutocompletePredictionsRequest.

  • Korekta lokalizacji lub ograniczenie lokalizacji

    Możesz określić uprzedzenia związane z lokalizacją lub ograniczenie ale nie jednocześnie, aby zdefiniować obszar wyszukiwania. Ograniczenie lokalizacji należy traktować jako regionu, w którym muszą się znajdować wyniki, oraz efektu lokalizacji określając region, w którym muszą znajdować się wyniki. Główna różnica polega na tym, z uprzedzeniami lokalizacji, wyniki spoza określonego regionu mogą nadal być zwracane.

    • Korekta lokalizacji

      Określa obszar wyszukiwania. Ta lokalizacja działa raczej stronniczo, a nie ogranicza, więc wyniki poza określonym obszarem mogą być nadal zwracane.

      Aby ustawić parametr odchylenia lokalizacji, wywołaj metodę setLocationBias(). podczas tworzenia obiektu FindAutocompletePredictionsRequest.

    • Ograniczenie dotyczące lokalizacji

      Określa obszar wyszukiwania. Wyniki spoza określonego obszaru nie są .

      Aby ustawić parametr ograniczenia lokalizacji, wywołaj setLocationRestriction(). podczas tworzenia obiektu FindAutocompletePredictionsRequest.

    Określ uprzedzenia związane z lokalizacją lub region ograniczenia lokalizacji jako prostokątnego widocznego obszaru lub okręgu.

    • Okrąg jest wyznaczany przez punkt środkowy i promień w metrach. Promień musi się mieścić w zakresie między 0,0 i 50000,0 włącznie. Wartością domyślną jest 0,0. W przypadku ograniczeń dotyczących lokalizacji: musisz ustawić promień na wartość większą niż 0,0. W przeciwnym razie żądanie zwraca Brak wyników.

    • Prostokąt to widoczny obszar o długości i szerokości szerokości geograficznej, reprezentowany przez dwa elementy. po przekątnej low i high. Widoczny obszar jest uważany za obszar zamknięty, co oznacza, że obejmuje jego granicę. Granice szerokości geograficznej musi mieścić się w przedziale od -90 do 90 stopni włącznie i musi mieścić się w granicach długości geograficznej musi mieścić się w zakresie od -180 do 180 stopni włącznie:

      • Jeśli low = high, widoczny obszar składa się z tego pojedynczego punktu.
      • Jeśli low.longitude > high.longitude, zakres długości geograficznej jest odwrócony (widoczny obszar przecina linię długości geograficznej 180 stopni).
      • Jeśli low.longitude = -180 stopni, a high.longitude = 180 stopni, widoczny obszar obejmuje wszystkie długości geograficzne.
      • Jeśli low.longitude = 180 stopni, a high.longitude = -180 stopni, zakres długości geograficznej jest pusty.

      Musisz wypełnić zarówno pola low, jak i high, a także reprezentowane pole. nie może być pusta. Gdy to zrobisz, pojawi się błąd.

  • Punkt początkowy

    Punkt początkowy, z którego ma zostać obliczona bezpośrednia odległość do miejsce docelowe (dostęp przy użyciu: getDistanceMeters()). Jeśli ta wartość to odległość w linii prostej nie zostanie zwrócona. Należy określić jako współrzędne geograficzne:

    Aby ustawić parametr origin, wywołaj setOrigin() podczas tworzenia obiektu FindAutocompletePredictionsRequest.

  • Kod regionu

    Kod regionu używany do formatowania odpowiedzi, w tym formatowanie adresu, określony jako ccTLD („domena najwyższego poziomu”) dwuznakową. Większość kodów ccTLD jest identycznych z kodami ISO 3166-1. z kilkoma istotnymi wyjątkami. Na przykład domena ccTLD Wielkiej Brytanii to "uk" (co.uk), natomiast kod ISO 3166-1 to „gb”. (technicznie dla funkcji podmiotu „Wielkiej Brytanii i Irlandii Północnej”).

    Jeśli podasz nieprawidłowy kod regionu, interfejs API zwróci błąd INVALID_ARGUMENT . Ten parametr może wpływać na wyniki w zależności od obowiązującego prawa.

    Aby ustawić parametr kodu regionu, wywołaj metodę setRegionCode(). podczas tworzenia obiektu FindAutocompletePredictionsRequest.

  • Token sesji

    Tokeny sesji to generowane przez użytkownika ciągi tekstowe, które śledzą Autouzupełnianie (nowych) połączeń jako „sesji”. Autouzupełnianie wykorzystuje tokeny sesji do Pogrupować fazy zapytania i wyboru wyszukiwania autouzupełniania przez użytkownika w oddzielną sesję w celach rozliczeniowych. Sesja rozpoczyna się, gdy użytkownik zaczyna wpisywać zapytanie, a kończy po wybraniu miejsca. Każda sesja może zawierać wiele zapytań, a po nich wybór jednego miejsca. Gdy sesja ma że token jest już nieważny; aplikacja musi wygenerować nowy token na każdą sesję. Zalecamy korzystanie z tokenów sesji do wszystkich sesji autouzupełniania (gdy umieścisz fragment lub uruchomisz autouzupełnianie przy użyciu niż intencja, interfejs API zajmie się tym automatycznie).

    Autouzupełnianie korzysta z AutocompleteSessionToken identyfikować poszczególne sesje. Aplikacja powinna przekazywać nowy token sesji każdej nowej sesji, a następnie przekazać ten sam token wraz z identyfikatorem miejsca kolejne wywołanie do fetchPlace() w celu pobrania szczegółowych informacji o miejscu, które zostało wybrane przez użytkownika.

    Aby ustawić parametr tokena sesji, wywołaj metodę setSessionToken(). podczas tworzenia obiektu FindAutocompletePredictionsRequest.

    Więcej informacji: Tokeny sesji.

Przykłady autouzupełniania (nowe)

Użyj ograniczenia lokalizacji i promowania lokalizacji

Autouzupełnianie (nowość) domyślnie używa promowania ze względu na adres IP do: kontrolować obszar wyszukiwania. W przypadku promowania ze względu na adres IP interfejs API używa adresu IP urządzenia, aby wpływać na wyniki. Opcjonalnie możesz użyć atrybutu lokalizacja z ograniczeniami lub stronnością lokalizacji, ale nie aby określić obszar wyszukiwania.

Ograniczenie lokalizacji określa obszar wyszukiwania. Wyniki poza określonymi nie są zwracane. W poniższym przykładzie użyto ograniczenia lokalizacji, aby ograniczyć żądanie do Okrągłe ograniczenie lokalizacji z promieniem 5000 metrów i wyśrodkowanym na San Francisco:

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

W przypadku odchylenia wyników lokalizacji lokalizacja może zostać zwrócona określona lokalizacja, w tym wyniki spoza określonej lokalizacji w pobliżu. W następnym przykładzie zmieniamy poprzednie żądanie tak, by używało uprzedzeń związanych z lokalizacją:

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

Użyj typów głównych

Użyj parametru Główne typy, aby ograniczyć wyniki z parametru żądania żądania określonego typu określonego w tabeli A i Tabela B. Możesz określić tablicę z maksymalnie pięcioma wartościami. Jeśli nazwa zostanie pominięta, zwracane są wszystkie typy.

Poniższy przykład określa ciąg zapytania „Piłka nożna”. i używa podstawowego typ, aby ograniczyć wyniki do instytucji określonego typu "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());
        })
    );

Jeśli pominiesz parametr głównych typów, wyniki mogą zawierać instytucje typu, który Ci nie odpowiada, na przykład "athletic_field".

Użyj punktu początkowego

Jeśli umieścisz w żądaniu parametr origin, określony jako szerokości i długości geograficznej, interfejs API uwzględnia odległość w postaci linii prostej z punktu początkowego do miejsca docelowego w odpowiedzi (dostęp przy użyciu getDistanceMeters()). W tym przykładzie punkt początkowy jest ustawiony na centrum San Francisco:

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

Atrybucje

Z autouzupełniania (nowego) możesz korzystać nawet bez mapy. Jeśli musisz pokazać mapę Google. Gdy wyświetlasz podpowiedzi z nowej funkcji autouzupełniania bez mapy, musi zawierać logo Google wyświetlane bezpośrednio w polu wyszukiwania/wynikach. Dla: Więcej informacji znajdziesz w sekcji Wyświetlanie logo Google oraz atrybucje.