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żyjCharacterStyle
ParametrCharacterStyle
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 obiektuFindAutocompletePredictionsRequest
.
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 obiektuFindAutocompletePredictionsRequest
. -
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 iincludedRegionCodes
, będą znajdować się w obszarze przecięcia obu ustawień.Aby ustawić parametr krajów, wywołaj
setCountries()
. podczas tworzenia obiektuFindAutocompletePredictionsRequest
. -
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 obiektuFindAutocompletePredictionsRequest
. 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 to określenie 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 obiektuFindAutocompletePredictionsRequest
.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 obiektuFindAutocompletePredictionsRequest
.
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
ihigh
. 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, ahigh.longitude
= 180 stopni, widoczny obszar obejmuje wszystkie długości geograficzne. - Jeśli
low.longitude
= 180 stopni, ahigh.longitude
= -180 stopni, zakres długości geograficznej jest pusty.
Musisz wypełnić zarówno pola
low
, jak ihigh
, a także reprezentowane pole. nie może być pusta. Gdy to zrobisz, pojawi się błąd.- Jeśli
-
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. Wartość musi być określona jako współrzędne geograficzne:Aby ustawić parametr origin, wywołaj
setOrigin()
podczas tworzenia obiektuFindAutocompletePredictionsRequest
. -
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 identyczna 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 obiektuFindAutocompletePredictionsRequest
. -
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 dofetchPlace()
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 obiektuFindAutocompletePredictionsRequest
.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.