Wyszukiwanie tekstowe zwraca informacje o zbiorze miejsc na podstawie ciągu znaków, np. „pizza w Warszawie”, „sklepy obuwnicze w pobliżu Ottawy” lub „ulica Główna 123”. W odpowiedzi usługa przedstawia listę miejsc pasujących do ciągu tekstowego i ustawione odchylenie do lokalizacji.
Usługa jest szczególnie przydatna do tworzenia niejednoznacznych zapytań adresowych w automatycznym systemie. Elementy inne niż adresowe w ciągu znaków mogą odpowiadać zarówno firmom, jak i adresom. Przykładami niejednoznacznych zapytań adresowych są niewłaściwie sformatowane adresy lub żądania zawierające elementy niebędące adresami, takie jak nazwy firm. Żądania takie jak w 2 pierwszych przykładach mogą zwracać zero wyników, chyba że ustawisz lokalizację – taką jak region, ograniczenie lokalizacji lub odchylenie lokalizacji.
„ul. Główna 10, Wielka Brytania” lub „ul. Główna 123, Polska” | Wiele ulic „High Street” w Wielkiej Brytanii i wiele „głównych” w Stanach Zjednoczonych. Zapytanie nie zwraca pożądanych wyników, chyba że ustawione jest ograniczenie lokalizacji. |
„SiećRestauracji Warszawa” | Wiele lokalizacji „Sieć restauracji” w Nowym Jorku, bez adresu ani nazwy ulicy. |
„ul. Główna 10, Katowice” lub „ul. Główna 123, Warszawa” | Tylko jedna „Główna ulica” w mieście Escher w Wielkiej Brytanii i tylko jedna „ulica główna” w mieście Pleasanton w Kalifornii. |
„Unikalna Nazwa Restauracji Warszawa” | Tylko jeden obiekt z taką nazwą w Warszawie. Nie trzeba podawać adresu, aby je rozróżnić. |
„pizzeria w Krakowie” | To zapytanie zawiera ograniczenie lokalizacji, a „pizzeria” jest dokładnie zdefiniowanym typem miejsca. Zwraca wiele wyników. |
„+1 514-670-8700” | To zapytanie zawiera numer telefonu. Zwraca wiele wyników wyszukiwania miejsc powiązanych z tym numerem telefonu. |
Żądania wyszukiwania tekstowego
Prośba o wyszukiwanie tekstowe ma postać:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define latitude and longitude coordinates of the search area. LatLng southWest = new LatLng(37.38816277477739, -122.08813770258874); LatLng northEast = new LatLng(37.39580487866437, -122.07702325966572); // Use the builder to create a SearchByTextRequest object. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationRestriction(RectangularBounds.newInstance(southWest, northEast)).build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
W tym przykładzie:
Ustaw listę pól tak, aby zawierała tylko pola
Place.Field.ID
iPlace.Field.NAME
. Oznacza to, że obiektyPlace
w odpowiedzi, które reprezentują każde pasujące miejsce, zawierają tylko te 2 pola.Użyj
SearchByTextRequest.Builder
, aby utworzyć obiektSearchByTextRequest
, który określa wyszukiwanie.Ustaw ciąg zapytania tekstowego na „Azjatyckie dania wegetariańskie”.
Ustaw maksymalną liczbę miejsc wyników na 10. Wartości domyślne i maksymalne to 20.
Ogranicz obszar wyszukiwania do prostokąta zdefiniowanego przez współrzędne geograficzne. Nie są zwracane żadne dopasowania spoza tego obszaru.
Dodaj obiekt
OnSuccessListener
i pobierz pasujące miejsca z obiektuSearchByTextResponse
.
Odpowiedzi dotyczące wyszukiwania tekstu
Klasa SearchByTextResponse
reprezentuje odpowiedź z żądania wyszukiwania. Obiekt SearchByTextResponse
zawiera:
Lista obiektów
Place
, które reprezentują wszystkie pasujące miejsca, z 1 obiektemPlace
na każde pasujące miejsce.Każdy obiekt
Place
zawiera tylko pola zdefiniowane przez listę pól przekazaną w żądaniu.
Na przykład w żądaniu zdefiniowano listę pól w taki sposób:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
Ta lista pól oznacza, że każdy obiekt Place
w odpowiedzi zawiera tylko identyfikator i nazwę każdego pasującego miejsca. Następnie możesz użyć metod Place.getId()
i Place.getName()
, aby uzyskać dostęp do tych pól w każdym obiekcie Place
.
Więcej przykładów uzyskiwania dostępu do danych w obiekcie Place
znajdziesz w artykule Uzyskiwanie dostępu do pól danych obiektu Place.
Wymagane parametry
-
Lista pól
Określ, które pola danych miejsc mają zostać zwrócone. Przekaż listę wartości
Place.Field
określających pola danych do zwrócenia. W odpowiedzi nie ma domyślnej listy zwróconych pól.Listy pól to dobra metoda projektowania, która pozwala uniknąć żądania zbędnych danych, co pozwala uniknąć niepotrzebnego czasu przetwarzania i opłat.
Określ co najmniej jedno z tych pól:
Poniższe pola wywołują kod SKU wyszukiwania tekstowego (tylko identyfikator):
Place.Field.ID
,Place.Field.NAME
Poniższe pola wywołują kod SKU wyszukiwania tekstowego (podstawowe):
Place.Field.ADDRESS_COMPONENTS
,Place.Field.BUSINESS_STATUS
,Place.Field.ADDRESS
,Place.Field.ICON_BACKGROUND_COLOR
,Place.Field.ICON_URL
,Place.Field.LAT_LNG
,Place.Field.PHOTO_METADATAS
,Place.Field.PLUS_CODE
,Place.Field.TYPES
,Place.Field.UTC_OFFSET
,Place.Field.VIEWPORT
,Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
Poniższe pola aktywują kod SKU wyszukiwania tekstowego (zaawansowane):
Place.Field.CURRENT_OPENING_HOURS
,Place.Field.SECONDARY_OPENING_HOURS
,Place.Field.PHONE_NUMBER
,Place.Field.PRICE_LEVEL
,Place.Field.RATING
,Place.Field.OPENING_HOURS
,Place.Field.USER_RATINGS_TOTAL
,Place.Field.WEBSITE_URI
Następujące pola wywołują kod SKU wyszukiwania tekstowego (preferowane):
Place.Field.CURBSIDE_PICKUP
,Place.Field.DELIVERY
,Place.Field.DINE_IN
,Place.Field.EDITORIAL_SUMMARY
,Place.Field.RESERVABLE
,Place.Field.REVIEWS
,Place.Field.SERVES_BEER
,Place.Field.SERVES_BREAKFAST
,Place.Field.SERVES_BRUNCH
,Place.Field.SERVES_DINNER
,Place.Field.SERVES_LUNCH
,Place.Field.SERVES_VEGETARIAN_FOOD
,Place.Field.SERVES_WINE
,Place.Field.TAKEOUT
-
Zapytanie tekstowe
Ciąg tekstowy, który należy wyszukać, na przykład „restauracja”, „ulica Główna 123” lub „najlepsze miejsce w Krakowie”. Interfejs API zwraca kandydujące dopasowania na podstawie tego ciągu i porządkuje wyniki na podstawie ich postrzeganej trafności.
Parametry opcjonalne
Ustaw te parametry, używając metod SearchByTextRequest.Builder
. Aby na przykład ustawić maksymalną liczbę wyników, wywołaj metodę SearchByTextRequest.Builder.setMaxResultCount()
.
Uwzględniony typ
Ogranicza wyniki do miejsc pasujących do określonego typu zdefiniowanego w tabeli A. Można podać tylko jeden typ. Na przykład:
setIncludedType("bar")
setIncludedType("pharmacy")
Wpływ na lokalizację
Określa obszar wyszukiwania. Ta lokalizacja jest odchyleniem, co oznacza, że mogą być zwracane wyniki dotyczące określonej lokalizacji, w tym wyniki spoza określonego obszaru.
Możesz określić ograniczenie lub promowanie lokalizacji, ale nie obie te wartości jednocześnie. Ograniczenie dotyczące lokalizacji określa region, w którym muszą znajdować się wyniki, a odchylenie lokalizacji – region, w którym wyniki muszą znajdować się w pobliżu, ale mogą znajdować się poza danym obszarem.
Określ region jako prostokątny widoczny obszar lub okrąg.
Okrąg jest określony przez punkt środkowy i promień w metrach. Promień musi mieścić się w zakresie od 0,0 do 50 000,0 włącznie. Domyślny promień to 0,0. Na przykład:
// Define latitude and longitude coordinates of the center of the search area. LatLng searchCenter = new LatLng(37.38816277477739, -122.08813770258874); // Use the builder to create a SearchByTextRequest object. // Set the radius of the search area to 500.0 meters. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationBias(CircularBounds.newInstance(searchCenter, 500.0)).build();
Prostokąt to widoczny obszar o długości i szerokości geograficznej, wyrażony jako 2 położone po przekątnej naprzeciwległości najniższego i najwyższego punktu. Najniższy punkt oznacza południowo-zachodni róg prostokąta, a najwyższy – północno-wschodni róg prostokąta.
Widoczny obszar jest traktowany jako zamknięty obszar, co oznacza, że obejmuje swoją granicę. Granice szerokości geograficznej muszą mieścić się w zakresie od -90 do 90 stopni włącznie, a długość geograficzna – 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 180 stopni). - Jeśli
low.longitude
= -180 stopni,high.longitude
= 180 stopni, widoczny obszar obejmuje wszystkie długości geograficzne. - Jeśli
low.longitude
= 180 stopni ihigh.longitude
= -180 stopni, zakres długości geograficznej jest pusty. - Jeśli
low.latitude
>high.latitude
, zakres szerokości geograficznej jest pusty.
Musisz wypełnić zarówno niski, jak i najwyższy poziom, a reprezentowane pole nie może być puste. Pusty widoczny obszar powoduje wystąpienie błędu.
Na przykład dla prostokątnego widocznego obszaru zapoznaj się z sekcją Żądania wyszukiwania tekstu.
- Jeśli
Ograniczenie lokalizacji
Określa obszar wyszukiwania. Wyniki spoza określonego obszaru nie są zwracane. Określ region jako prostokątny widoczny obszar. Aby dowiedzieć się, jak definiować widoczny obszar, zapoznaj się z opisem w sekcji Wpływ na lokalizację.
Możesz określić ograniczenie lub promowanie lokalizacji, ale nie obie te wartości jednocześnie. Ograniczenie lokalizacji definiuje się jako region, w którym muszą znajdować się wyniki, a odchylenie lokalizacji – region, w którym wyniki muszą znajdować się w pobliżu, ale mogą znajdować się poza danym obszarem.
-
Maksymalna liczba wyników
Określa maksymalną liczbę zwracanych wyników wyszukiwania miejsc. Wartość musi mieścić się w przedziale od 1 do 20 (domyślnie) włącznie.
Minimalna ocena
Ogranicza wyniki tylko do tych, których średnia ocena użytkowników jest większa od tego limitu lub jej równa. Wartości muszą mieścić się w zakresie od 0,0 do 5,0 (włącznie) w przyrostach co 0,5. Na przykład: 0; 0,5; 1,0; ... ; 5,0 włącznie. Wartości są zaokrąglane w górę do najbliższej wielokrotności 0,5. Na przykład wartość 0,6 eliminuje wszystkie wyniki z oceną mniejszą niż 1,0.
Teraz otwarte
Jeśli
true
, zwraca tylko te miejsca, które w momencie wysyłania zapytania są otwarte. Jeśli wartość tofalse
, zwróć wszystkie firmy niezależnie od tego, czy są otwarte. Jeśli ustawisz ten parametr nafalse
, zwracane są miejsca, które w bazie danych Miejsc Google nie mają określonych godzin otwarcia.-
Poziomy cen
Ogranicz wyszukiwanie do miejsc z określonymi cenami. Domyślnie wybrane są wszystkie poziomy cen.
Określ listę zawierającą co najmniej jedną z tych wartości liczbowych:
- 1–
PRICE_LEVEL_INEXPENSIVE
- 2 –
PRICE_LEVEL_MODERATE
- 3 –
PRICE_LEVEL_EXPENSIVE
- 4 –
PRICE_LEVEL_VERY_EXPENSIVE
- 1–
Preferowana pozycja
Określa sposób wyznaczania pozycji wyników w odpowiedzi. W stosownych przypadkach interfejs API domyślnie używa atrybutu
RELEVANCE
. Na przykład w przypadku zapytania „Restauracje w Nowym Jorku” domyślną wartością jestRELEVANCE
. W przypadku zapytań geograficznych, np. „Mountain View, CA”, lub innego typu zapytań, wartość domyślna nie jest stosowana, a wyniki są wyświetlane w kolejności, w jakiej są zwracane przez backend.Dostępne wartości:
SearchByTextRequest.RankPreference.DISTANCE
: uporządkuj wyniki według odległości.SearchByTextRequest.RankPreference.RELEVANCE
: uporządkuj wyniki według trafności.
Kod regionu
Kod regionu używany do formatowania odpowiedzi, określony jako dwuznakowy kod CLDR. Ten parametr może też mieć wpływ na wyniki wyszukiwania. Brak wartości domyślnej.
Jeśli nazwa kraju w polu adresu w odpowiedzi jest zgodna z kodem regionu, kod kraju jest pomijany w adresie.
Większość kodów CLDR jest identyczna z kodami ISO 3166-1 z kilkoma wyjątkami. Na przykład domena ccTLD w Wielkiej Brytanii to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie oznaczający jednostkę „Wielka Brytania i Irlandia Północna”). Parametr może wpływać na wyniki w zależności od obowiązującego prawa.
Rygorystyczne filtrowanie typów
Używane z parametrem uwzględniania. Gdy ma wartość
true
, zwracane są tylko miejsca pasujące do określonych typów określonych przez typ uwzględniania. Gdyfalse
jest wartością domyślną, odpowiedź może zawierać miejsca, które nie pasują do określonych typów.