Wyszukiwanie tekstowe (nowe) zwraca informacje o zbiorze miejsc na podstawie ciągu znaków, np. „pizza w Warszawie”, „sklepy obuwnicze w pobliżu Krakowa” lub „ul. Główna 123”. Usługa odpowiada listą miejsc pasujących do ciągu tekstowego i wszelkich ustawionych preferencji lokalizacyjnych.
Usługa jest szczególnie przydatna do wykonywania niejednoznacznych zapytań o adres w systemie automatycznym. Elementy ciągu znaków, które nie są adresem, mogą pasować do firm i adresów. Przykłady niejednoznacznych zapytań o adres to źle sformatowane adresy lub zapytania zawierające elementy inne niż adres, np. nazwy firm. Żądania takie jak w pierwszych dwóch przykładach mogą nie zwracać żadnych wyników, chyba że ustawiona jest lokalizacja, np. region, ograniczenie lokalizacji lub preferencje lokalizacyjne.
Wyszukiwanie tekstowe (nowość) jest podobne do wyszukiwania w pobliżu (nowość). Główna różnica między tymi usługami polega na tym, że w przypadku wyszukiwania tekstowego (nowego) możesz określić dowolny ciąg wyszukiwania, a w przypadku wyszukiwania w pobliżu (nowego) musisz określić konkretny obszar, w którym chcesz wyszukiwać.
„10 High Street, UK” lub „123 Main Street, US” | W Wielkiej Brytanii jest wiele ulic „High Street”, a w Stanach Zjednoczonych wiele ulic „Main Street”. Zapytanie nie zwraca oczekiwanych wyników, chyba że ustawione jest ograniczenie lokalizacji. |
„ChainRestaurant New York” | Wiele lokalizacji „ChainRestaurant” w Nowym Jorku; brak adresu ulicy lub nawet nazwy ulicy. |
„10 High Street, Escher UK” lub „123 Main Street, Pleasanton US” | Tylko jedna ulica „High Street” w mieście Escher w Wielkiej Brytanii i tylko jedna ulica „Main Street” w mieście Pleasanton w Kalifornii w Stanach Zjednoczonych. |
„UniqueRestaurantName New York” | Tylko 1 placówka o tej nazwie w Nowym Jorku; nie trzeba podawać adresu, aby ją odróżnić. |
„pizzerie w Nowym Jorku” | To zapytanie zawiera ograniczenie lokalizacji, a „pizzerie” to dobrze zdefiniowany typ miejsca. Zwraca wiele wyników. |
"+1 514-670-8700" | To zapytanie zawiera numer telefonu. Zwraca wiele wyników dotyczących miejsc powiązanych z tym numerem telefonu. |
Żądania wyszukiwania tekstowego
Żądanie wyszukiwania tekstowego 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
SearchByTextRequest.Builder
, aby utworzyć obiektSearchByTextRequest
, który definiuje wyszukiwanie.Ustaw ciąg zapytania tekstowego na „Spicy Vegetarian Food”.
Ustaw maksymalną liczbę miejsc w wynikach na 10. Wartość domyślna i maksymalna to 20.
Ogranicz obszar wyszukiwania do prostokąta zdefiniowanego przez współrzędne geograficzne. Nie są zwracane żadne dopasowania spoza tego obszaru.
Dodaj
OnSuccessListener
i uzyskaj pasujące miejsca z obiektuSearchByTextResponse
.
Odpowiedzi wyszukiwania tekstowego
Klasa SearchByTextResponse
reprezentuje odpowiedź na żądanie wyszukiwania. Obiekt SearchByTextResponse
zawiera:
Lista obiektów
Place
reprezentujących wszystkie pasujące miejsca. Każde pasujące miejsce jest reprezentowane przez jeden obiektPlace
.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 ten sposób:
// 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 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
Wymagane parametry dla
SearchByTextRequest
to:
-
Lista pól
Określ, które pola danych o miejscu mają być zwracane. Przekaż listę wartości
Place.Field
określających 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 skrócić czas przetwarzania i uniknąć opłat.
Określ co najmniej jedno z tych pól:
Te pola wywołują Text Search Essentials ID Only SKU:
Place.Field.DISPLAY_NAME
*
* Używaj zamiastPlace.Field.NAME
(wycofano w wersji 4.0).
Place.Field.ID
Place.Field.RESOURCE_NAME
*
* Zawiera nazwę zasobu miejsca w formacie:places/PLACE_ID
.
UżyjDISPLAY_NAME
, aby uzyskać dostęp do nazwy tekstowej miejsca.Te pola wywołują jednostkę SKU Text Search Pro:
Place.Field.ACCESSIBILITY_OPTIONS
*
Użyj zamiastPlace.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
(wycofano).
Place.Field.ADDRESS_COMPONENTS
Place.Field.ADR_FORMAT_ADDRESS
Place.Field.BUSINESS_STATUS
Place.Field.FORMATTED_ADDRESS
*
Użyj zamiastPlace.Field.ADDRESS
(wycofano).
Place.Field.GOOGLE_MAPS_URI
Place.Field.ICON_BACKGROUND_COLOR
Place.Field.ICON_MASK_URL
*
Użyj zamiastPlace.Field.ICON_URL
(wycofano).
Place.Field.LOCATION
*
Używaj zamiastPlace.Field.LAT_LNG
(wycofano).
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 wywołują kod SKU Text Search Enterprise:
Place.Field.CURRENT_OPENING_HOURS
Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_PHONE_NUMBER
*
* Używaj zamiast wycofanego parametruPlace.Field.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
*
* Użyj zamiast wycofanego parametruPlace.Field.USER_RATINGS_TOTAL
.
Place.Field.WEBSITE_URI
Te pola wywołują jednostkę SKU Text Search Enterprise Plus:
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
Ciąg tekstowy, według którego ma być prowadzone wyszukiwanie, np. „restauracja”, „ul. Główna 123” lub „najlepsze miejsce do odwiedzenia w San Francisco”. Interfejs API zwraca pasujące kandydatury 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
Użyj obiektu
SearchByTextRequest
, aby określić opcjonalne parametry żądania.
Uwzględniony typ
Ogranicza wyniki do miejsc pasujących do określonego typu zdefiniowanego w tabeli A. Możesz określić tylko jeden typ. Na przykład:
setIncludedType("bar")
setIncludedType("pharmacy")
Aby ustawić parametr included type, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetIncludedType()
.Obciążenie lokalizacją
Określa obszar wyszukiwania. Ta lokalizacja służy jako punkt odniesienia, co oznacza, że mogą być zwracane wyniki z okolic określonej lokalizacji, w tym wyniki spoza określonego obszaru.
Możesz określić ograniczenie lokalizacji lub preferencje lokalizacji, ale nie oba te ustawienia naraz. Ograniczenie lokalizacji określa region, w którym muszą się znajdować wyniki, a preferencje lokalizacji określają region, w którym prawdopodobnie będą się znajdować wyniki lub w pobliżu którego będą się wyświetlać. Pamiętaj, że w przypadku korzystania z preferencji lokalizacji wyniki mogą się nadal znajdować poza określonym obszarem.
Określ region jako prostokątny widoczny obszar lub jako 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 widoczny obszar określony przez szerokość i długość geograficzną, reprezentowany przez 2 przeciwległe punkty o niskich i wysokich wartościach. Punkt dolny oznacza południowo-zachodni róg prostokąta, a punkt górny – północno-wschodni róg prostokąta.
Widoczny obszar jest uważany za obszar zamknięty, co oznacza, że obejmuje swoje granice. Zakres szerokości geograficznej musi się mieścić w przedziale od -90 do 90 stopni włącznie, a zakres długości geograficznej musi się mieścić w przedziale 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 przekracza 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.
Musisz podać dolną i górną wartość, a reprezentowane pole nie może być puste. Pusty widok spowoduje błąd.
Na przykład w przypadku prostokątnego obszaru widocznego zapoznaj się z informacjami o żądaniach wyszukiwania tekstowego.
Aby ustawić parametr odchylenia lokalizacji, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetLocationBias()
.- Jeśli
Ograniczenie dotyczące lokalizacji
Określa obszar wyszukiwania. Wyniki spoza określonego obszaru nie są zwracane. Określ region jako prostokątny widoczny obszar. Informacje o definiowaniu obszaru widoku znajdziesz w opisie błędu lokalizacji.
Możesz określić ograniczenie lokalizacji lub preferencje lokalizacji, ale nie oba te ustawienia naraz. Ograniczenie lokalizacji określa region, w którym muszą się znajdować wyniki, a odchylenie lokalizacji określa region, w pobliżu którego muszą się znajdować wyniki, ale mogą być poza tym obszarem.
Aby ustawić parametr ograniczenia lokalizacji, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetLocationRestriction()
.-
Maksymalna liczba wyników
Określa maksymalną liczbę wyników dotyczących miejsc do zwrócenia. Musi mieścić się w przedziale od 1 do 20 (wartość domyślna) włącznie.
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 zakresie od 0,0 do 5,0 (włącznie) i być wielokrotnością 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 liczby z końcówką 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
, zwróć wszystkie firmy niezależnie od stanu otwarcia. Miejsca, które nie mają określonych godzin otwarcia w bazie danych Miejsc Google, są zwracane, jeśli ustawisz ten parametr nafalse
.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 na wszystkich poziomach 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 zwrócić:
1
– miejsce oferuje niedrogie usługi.2
– miejsce oferuje usługi w umiarkowanych 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()
. Preferencje dotyczące rankingu
Określa, w jaki sposób wyniki są klasyfikowane w odpowiedzi na podstawie typu zapytania:
- W przypadku zapytania kategorycznego, np. „Restauracje w Nowym Jorku”, domyślnie używana jest funkcja
SearchByTextRequest.RankPreference.RELEVANCE
(sortowanie wyników według trafności wyszukiwania). Możesz ustawić preferencje dotyczące rankingu naSearchByTextRequest.RankPreference.RELEVANCE
lubSearchByTextRequest.RankPreference.DISTANCE
(sortowanie wyników według odległości). - W przypadku zapytań niekategorycznych, takich jak „Mountain View, CA”, zalecamy pozostawienie parametru preferencji rankingu bez ustawienia.
Aby ustawić parametr preferencji rankingu, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetRankPreference()
.- W przypadku zapytania kategorycznego, np. „Restauracje w Nowym Jorku”, domyślnie używana jest funkcja
Kod regionu
Kod regionu używany do formatowania odpowiedzi, podany jako dwuznakowy 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 kilkoma istotnymi wyjątkami. Na przykład krajowa domena najwyższego poziomu Zjednoczonego Królestwa to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Zjednoczone Królestwo Wielkiej Brytanii i Irlandii Północnej”). W zależności od obowiązujących przepisów parametr może wpływać na wyniki.
Aby ustawić parametr kodu regionu, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetRegionCode()
.Filtrowanie ścisłe
Używany z parametrem typu include. Jeśli ustawisz wartość
true
, zwracane będą tylko miejsca pasujące do typów określonych przez parametr include type. Gdy wartość parametru tofalse
(domyślnie), odpowiedź może zawierać miejsca, które nie pasują do określonych typów.Aby ustawić parametr filtrowania ścisłego typu, podczas tworzenia obiektu
SearchByTextRequest
wywołaj metodęsetStrictTypeFiltering()
.