Wyszukiwanie tekstowe (nowa funkcja) zwraca informacje o zbiorze miejsc na podstawie ciągu znaków, np. „pizza w Warszawie” lub „sklepy obuwnicze w pobliżu Warszawy” albo „123 Ulica Główna”. Usługa zwraca listę miejsc pasujących do ciągu tekstowego i ustawionego ustawienia lokalizacji.
Usługa jest szczególnie przydatna do niejednoznacznych zapytań adresowych w automatycznym systemie. Elementy ciągu, które nie są adresami, mogą pasować do firm, a także do adresów. Przykłady niejednoznacznych zapytań dotyczących adresów to źle sformatowane adresy lub zapytania zawierające elementy inne niż adres, takie jak nazwy firm. Żądania podobne do tych w pierwszych 2 przykladach mogą zwracać zero wyników, chyba że ustawisz lokalizację, np. region, ograniczenie lokalizacji lub preferencje dotyczące lokalizacji.
Wyszukiwanie tekstu (nowość) działa podobnie jak Wyszukiwanie w pobliżu (nowość). Główna różnica między tymi funkcjami polega na tym, że wyszukiwanie tekstowe (nowa wersja) umożliwia określenie dowolnego ciągu znaków, a wyszukiwanie w pobliżu (nowa wersja) wymaga wskazania konkretnego obszaru wyszukiwania.
„10 High Street, UK” lub „123 Main Street, US”. | Wiele „High Street” w Wielkiej Brytanii; wiele „Main Street” w Stanach Zjednoczonych. Zapytanie nie zwraca pożądanych wyników, chyba że ustawiono ograniczenie lokalizacji. |
„ChainRestaurant New York” | Wiele lokalizacji „ChainRestaurant” w Nowym Jorku; brak adresu ulicy ani nawet nazwy ulicy. |
„10 High Street, Escher UK” lub „123 Main Street, Pleasanton US”. | Tylko jedna „High Street” w brytyjskim mieście Escher; tylko jedna „Main Street” w amerykańskim mieście Pleasanton w Kalifornii. |
„NazwaWyjątkowejRestauracji Nowy Jork” | Tylko jedna firma o tej nazwie w Nowym Jorku; nie ma adresu ulicznego, który pozwoliłby ją odróżnić. |
„pizzerie w Nowym Jorku” | Zapytanie zawiera ograniczenie dotyczące lokalizacji, a „pizzerie” to dobrze zdefiniowany typ miejsca. Zwraca ono wiele wyników. |
„+1 514-670-8700” | To zapytanie zawiera numer telefonu. Zwraca on wiele wyników dla miejsc powiązanych z tym numerem telefonu. |
Prośby o wyszukiwanie tekstowe
Zapytanie o wyszukiwanie tekstu ma postać:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_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
Place.Field.ID
iPlace.Field.DISPLAY_NAME
. Oznacza to, że obiektyPlace
w odpowiedzi, które reprezentują każde pasujące miejsce, zawierają tylko te 2 pola.Użyj elementu
SearchByTextRequest.Builder
, aby utworzyć obiektSearchByTextRequest
, który definiuje wyszukiwanie.Ustaw tekstowy ciąg zapytania na „Ostre wegańskie jedzenie”.
Ustaw maksymalną liczbę miejsc wyników na 10. Wartość domyślna i maksymalna to 20.
Ogranicz obszar wyszukiwania do prostokąta zdefiniowanego przez współrzędne szerokości i długości geograficznej. Nie są zwracane żadne wyniki spoza tego obszaru.
Dodaj
OnSuccessListener
i pobierz pasujące miejsca z obiektuSearchByTextResponse
.
Odpowiedzi na wyszukiwanie tekstowe
Klasa SearchByTextResponse
reprezentuje odpowiedź na żądanie wyszukiwania. Obiekt SearchByTextResponse
zawiera:
Lista obiektów
Place
, które reprezentują wszystkie pasujące miejsca, z jednym 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:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
Ta lista pól oznacza, że każdy obiekt Place
w odpowiedzi zawiera tylko identyfikator miejsca i jego nazwę. Następnie możesz używać 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 Dostęp do pól danych obiektu Miejsce.
Wymagane parametry
Wymagane parametry w przypadku SearchByTextRequest
:
-
Lista pól
Określ, które pola danych o miejscach mają być zwracane. Przekaż listę wartości
Place.Field
, która określa pola danych, które mają zostać zwrócone. W odpowiedzi nie ma domyślnej listy zwracanych pól.Listy pól to dobra praktyka projektowania, która pozwala uniknąć żądania niepotrzebnych danych, co pomaga uniknąć niepotrzebnego czasu przetwarzania i opłat.
Podaj co najmniej 1 z tych pól:
Te pola powodują wyświetlenie SKU w wyszukiwaniu tekstowym (tylko identyfikator):
Place.Field.DISPLAY_NAME
,Place.Field.ID
,Place.Field.RESOURCE_NAME
Te pola wywołują SKU wyszukiwania tekstowego (podstawowego):
Place.Field.ACCESSIBILITY_OPTIONS
,Place.Field.ADDRESS_COMPONENTS
,Place.Field.ADR_FORMAT_ADDRESS
,Place.Field.BUSINESS_STATUS
,Place.Field.FORMATTED_ADDRESS
,Place.Field.GOOGLE_MAPS_URI
,Place.Field.ICON_BACKGROUND_COLOR
,Place.Field.ICON_MASK_URL
,Place.Field.LOCATION
,Place.Field.PHOTO_METADATAS
,Place.Field.PLUS_CODE
,Place.Field.PRIMARY_TYPE
,Place.Field.PRIMARY_TYPE_DISPLAY_NAME
,Place.Field.SHORT_FORMATTED_ADDRESS
,Place.Field.SUB_DESTINATIONS
,Place.Field.TYPES
,Place.Field.UTC_OFFSET
,Place.Field.VIEWPORT
Te pola powodują, że wyszukiwanie tekstowe (zaawansowane) SKU:
Place.Field.CURRENT_OPENING_HOURS
,Place.Field.CURRENT_SECONDARY_OPENING_HOURS
,Place.Field.INTERNATIONAL_PHONE_NUMBER
,Place.Field.NATIONAL_PHONE_NUMBER
,Place.Field.OPENING_HOURS
,Place.Field.PRICE_LEVEL
,Place.Field.RATING
,Place.Field.SECONDARY_OPENING_HOURS
,Place.Field.USER_RATING_COUNT
,Place.Field.WEBSITE_URI
Te pola powodują wyświetlenie SKU w wyszukiwarce tekstowej (preferowane):
Place.Field.ALLOWS_DOGS
,Place.Field.CURBSIDE_PICKUP
,Place.Field.DELIVERY
,Place.Field.DINE_IN
,Place.Field.EDITORIAL_SUMMARY
,Place.Field.EV_CHARGE_OPTIONS
,Place.Field.FUEL_OPTIONS
,Place.Field.GOOD_FOR_CHILDREN
,Place.Field.GOOD_FOR_GROUPS
,Place.Field.GOOD_FOR_WATCHING_SPORTS
,Place.Field.LIVE_MUSIC
,Place.Field.MENU_FOR_CHILDREN
,Place.Field.OUTDOOR_SEATING
,Place.Field.PARKING_OPTIONS
,Place.Field.PAYMENT_OPTIONS
,Place.Field.RESERVABLE
,Place.Field.RESTROOM
,Place.Field.REVIEWS
,Place.Field.SERVES_BEER
,Place.Field.SERVES_BREAKFAST
,Place.Field.SERVES_BRUNCH
,Place.Field.SERVES_COCKTAILS
,Place.Field.SERVES_COFFEE
,Place.Field.SERVES_DESSERT
,Place.Field.SERVES_DINNER
,Place.Field.SERVES_LUNCH
,Place.Field.SERVES_VEGETARIAN_FOOD
,Place.Field.SERVES_WINE
,Place.Field.TAKEOUT
Aby ustawić parametr listy pól, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetPlaceFields()
. -
Zapytanie tekstowe
Tekst, w którym ma być przeprowadzone wyszukiwanie, np. „restauracja”, „123 Ulica Główna” lub „najlepsze miejsce do odwiedzenia w San Francisco”. Interfejs API zwraca dopasowania kandydatów na podstawie tego ciągu znaków i porządkuje wyniki według ich trafności.
Aby ustawić parametr zapytania tekstowego, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetTextQuery()
.
Parametry opcjonalne
Aby określić opcjonalne parametry żądania, użyj obiektu SearchByTextRequest
.
Typ uwzględnienia
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")
Aby ustawić parametr typu uwzględnionego, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetIncludedType()
.Uwzględnianie lokalizacji
Określa obszar wyszukiwania. Ta lokalizacja służy jako preferencja, co oznacza, że mogą być zwracane wyniki z okolic wskazanej lokalizacji, w tym poza wskazanym obszarem.
Możesz określić ograniczenie lokalizacji lub preferencje dotyczące lokalizacji, ale nie obie te opcje jednocześnie. Ograniczenie lokalizacji to określenie regionu, w którym muszą się znajdować wyniki, a uwzględnienie lokalizacji to określenie regionu, w którym prawdopodobnie znajdą się wyniki lub w pobliżu którego się znajdą. Pamiętaj, że przy uwzględnieniu lokalizacji wyniki mogą się pojawić poza określonym obszarem.
Określ region jako prostokątny widoczny obszar lub okrąg.
Okrąg jest definiowany przez punkt środkowy i promień w metrach. Promień musi mieścić się w zakresie od 0,0 do 50 000,0 (włącznie). 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 strefa widoku szerokości i długości geograficznej, reprezentowana przez 2 punkty: dolny lewy i górny prawy. Niski punkt oznacza południowo-zachodni róg prostokąta, a wysoki – północno-wschodni.
Widoczny obszar jest uważany za zamknięty obszar, co oznacza, że obejmuje swoją krawędź. Granice szerokości geograficznej muszą mieścić się w przedziale od -90 do 90 stopni, a granice długości geograficznej – w przedziale od -180 do 180 stopni:
- 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°). - 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. - Jeśli
low.latitude
>high.latitude
, zakres szerokości geograficznej jest pusty.
Wartości dolna i górna muszą być wypełnione, a reprezentowane pole nie może być puste. Pusta wizjer prowadzi do błędu.
Przykład prostokątnego widoku w ramce znajdziesz w artykule Wyszukiwanie tekstu – żądania.
Aby ustawić parametr bias_location, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetLocationBias()
.- Jeśli
Ograniczenie dotyczące lokalizacji
Określa obszar wyszukiwania. Wyniki poza określonym obszarem nie są zwracane. Określ region jako prostokątny widoczny obszar. Aby dowiedzieć się więcej o definiowaniu widoku, zapoznaj się z opisem ustawienia lokalizacji.
Możesz określić ograniczenie lokalizacji lub preferencje dotyczące lokalizacji, ale nie obie te opcje jednocześnie. Ograniczenie lokalizacji to określenie regionu, w którym muszą znajdować się wyniki, a uwzględnienie lokalizacji to określenie regionu, w którym wyniki muszą się znajdować w pobliżu, ale nie muszą znajdować się w tym obszarze.
Aby ustawić parametr ograniczenia lokalizacji, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetLocationRestriction()
.-
Maksymalna liczba wyników
Określa maksymalną liczbę wyników wyszukiwania miejsc do zwrócenia. Musi mieścić się w zakresie od 1 do 20 (domyślnie).
Aby ustawić parametr maksymalnej liczby wyników, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetMaxResultCount()
. Minimalna ocena
Ogranicza wyniki tylko do tych, których średnia ocena użytkowników jest większa lub równa temu limitowi. Wartości muszą mieścić się w przedziale od 0,0 do 5,0 (włącznie) z krokami po 0,5. Przykład: 0, 0,5, 1,0, ... , 5,0. Wartości są zaokrąglane w górę do najbliższej 0,5. Na przykład wartość 0,6 eliminuje wszystkie wyniki z oceną mniejszą niż 1,0.
Aby ustawić parametr minimalnej oceny, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetMinRating()
.Teraz otwarte
Jeśli
true
, zwracaj tylko te miejsca, które są otwarte w momencie wysłania zapytania. Jeślifalse
, zwraca wszystkie firmy niezależnie od stanu otwarcia. Jeśli ustawisz ten parametr nafalse
, zwracane będą tylko miejsca, które nie podają godzin otwarcia w bazie danych Google Places.Aby ustawić parametr open now, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetOpenNow()
.-
Poziomy cen
Domyślnie wyniki obejmują miejsca, które oferują usługi we wszystkich przedziałach cenowych. Aby ograniczyć wyniki do miejsc o określonych poziomach cen, możesz przekazać listę wartości całkowitych odpowiadających poziomom cen miejsc, które chcesz uwzględnić:
1
– miejsce oferuje niedrogie usługi.2
– miejsce oferuje usługi w rozsądnych cenach.3
– miejsce oferuje drogie usługi.4
– miejsce oferuje bardzo drogie usługi.
Aby ustawić parametr poziomów cen, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetPriceLevels()
. Ustawienie „Ranking”
Określa sposób, w jaki wyniki są klasyfikowane w odpowiedzi na podstawie typu zapytania:
- W przypadku zapytania dotyczącego kategorii, np. „Restauracje w Nowym Jorku”, domyślnie jest używany parametr
SearchByTextRequest.RankPreference.RELEVANCE
(uporządkuj wyniki według trafności). Możesz ustawić preferencje sortowania naSearchByTextRequest.RankPreference.RELEVANCE
lubSearchByTextRequest.RankPreference.DISTANCE
(sortowanie wyników według odległości). - W przypadku zapytania niekategorycznego, np. „Warszawa”, zalecamy pozostawienie parametru preferencji rankingu bez wartości.
Aby ustawić parametr preferencji rankingu, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetRankPreference()
.- W przypadku zapytania dotyczącego kategorii, np. „Restauracje w Nowym Jorku”, domyślnie jest używany parametr
Kod regionu
Kod regionu użyty do sformatowania odpowiedzi, podany jako 2-znakowy kod CLDR. Ten parametr może też wpływać na wyniki wyszukiwania. Nie ma 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 niektórymi wyjątkami. Na przykład ccTLD Wielkiej Brytanii to „uk” (.co.uk), a jej kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”). Parametr może wpływać na wyniki w zależności od obowiązujących przepisów.
Aby ustawić parametr kodu regionu, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetRegionCode()
.Filtrowanie ścisłe
Używany z parametrem typu include. Gdy ustawisz wartość
true
, zwrócone zostaną tylko miejsca pasujące do typów określonych przez include type. Jeśli ustawisz wartośćfalse
(domyślnie), odpowiedź może zawierać miejsca, które nie pasują do określonych typów.Aby ustawić parametr ścisłego filtrowania typu, wywołaj metodę
setStrictTypeFiltering()
podczas tworzenia obiektuSearchByTextRequest
.