Wyszukiwanie tekstowe zwraca informacje o zbiorze miejsc na podstawie ciągu znaków. Na przykład „pizza w Krakowie”, „sklep obuwniczy w pobliżu Warszawy” lub „ulica Główna 123”. W odpowiedzi usługa przedstawi 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 automatycznych systemach, a komponenty inne niż adres w ciągu znaków mogą odpowiadać zarówno firmom, jak i adresom. Przykładami niejednoznacznych zapytań adresowych są niewłaściwie sformatowany adres lub żądania zawierające komponenty 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ę (np. 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 restauracji sieciowych w Nowym Jorku bez adresu i 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. |
Uzyskiwanie listy miejsc przez wyszukiwanie tekstowe
Utwórz żądanie wyszukiwania tekstowego, wywołując GMSPlacesClient
searchByTextWithRequest:
, przekazując obiekt GMSPlaceSearchByTextRequest
, który określa parametry żądania i metodę wywołania zwrotnego typu GMSPlaceSearchByTextResultCallback
na potrzeby obsługi odpowiedzi.
Obiekt GMSPlaceSearchByTextRequest
określa wszystkie parametry wymagane i opcjonalne dla żądania. Wymagane parametry:
- Lista pól do zwrócenia w obiekcie
GMSPlace
, nazywana też maską pola, zgodnie z definicją za pomocą właściwościGMSPlaceProperty
. Jeśli nie określisz co najmniej jednego pola na liście pól lub pominiesz tę listę, wywołanie zwróci błąd. - Zapytanie tekstowe.
To przykładowe żądanie wyszukiwania tekstowego określa, że odpowiedź obiektów GMSPlace
zawiera nazwę miejsca i identyfikator miejsca dla każdego obiektu GMSPlace
w wynikach wyszukiwania. Filtruje też odpowiedź, aby wyświetlić tylko miejsca typu „restauracja”.
Swift
// Create the GMSPlaceSearchByTextRequest object. let placeProperties: [GMSPlaceProperty] = [GMSPlacePropertyName, GMSPlacePropertyPlaceID]; let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York" placeProperties:placeProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue] request.locationRestriction = GMSPlaceRectangularLocationOption( CLLocationCoordinate2D(latitude: 20, longitude: 30), CLLocationCoordinate2D(latitude: 40, longitude: 50) ) // Array to hold the places in the response placeResults = []; let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } self.placeResults = results } GMSPlacesClient.shared().searchByTextWithRequest(with: request, callback: callback)
Objective-C
// Create the GMSPlaceSearchByTextRequest object. GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]]; request.isOpenNow = YES; request.includedType = @"restaurant"; request.maxResultCount = 5; request.minRating = 3.5; request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance; request.isStrictTypeFiltering = YES; request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ]; request.locationRestriction = GMSPlaceRectangularLocationOption( CLLocationCoordinate2DMake(20, 30), CLLocationCoordinate2DMake(40, 50)); request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(20, 30), 2.0); // Array to hold the places in the response _placeResults = [NSArray array]; // Create the GMSPlaceSearchByTextRequest object. [_placesClient searchByTextWithRequest:request callback:^(NSArray<GMSPlace *> _Nullable placeResults, NSError * _Nullable error) { if (placeResults.count > 0) { // Get list of places. _placeResults = placeResults; } }];
GooglePlacesSwift
let restriction = RectangularLocationRestriction( northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30), southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50) ) let searchByTextRequest = SearchByTextRequest( textQuery: "pizza in New York", placeProperties: [ .name, .placeID ], locationRestriction: restriction, includedType: .restaurant, maxResultCount: 5, minRating: 3.5, priceLevels: [ .moderate, .inexpensive ], isStrictTypeFiltering: true ) switch await placesClient.searchByText(with: searchByTextRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Odpowiedzi dotyczące wyszukiwania tekstu
Interfejs Text Search API zwraca tablicę dopasowań w postaci obiektów GMSPlace
z jednym obiektem GMSPlace
na pasujące miejsce.
Oprócz pól danych obiekt GMSPlace
w odpowiedzi zawiera te funkcje składowe:
-
isOpen
oblicza, czy dane miejsce jest otwarte o określonej godzinie. isOpenAtDate
oblicza, czy dane miejsce jest otwarte w określonym dniu.
Wymagane parametry
Określ parametry wyszukiwania za pomocą obiektu GMSPlaceSearchByTextRequest
.
-
Lista pól
Określ, które właściwości danych o miejscach mają być zwracane. Przekaż listę właściwości
GMSPlace
, które określają pola danych do zwrócenia. Jeśli pominiesz maskę pola, żądanie zwróci błąd.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):
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
Poniższe pola wywołują kod SKU wyszukiwania tekstowego (podstawowe):
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
Poniższe pola aktywują kod SKU wyszukiwania tekstowego (zaawansowane):
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Następujące pola wywołują kod SKU wyszukiwania tekstowego (preferowane):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
-
textQuery
Ciąg tekstowy, który należy wyszukać, np. „restauracja”, „ulica Główna 123” lub „najlepsze miejsce w Krakowie”.
Parametry opcjonalne
Aby określić opcjonalne parametry wyszukiwania, użyj obiektu GMSPlaceSearchByTextRequest
.
includedType
Ogranicza wyniki do miejsc pasujących do określonego typu zdefiniowanego w tabeli A. Można podać tylko jeden typ. Na przykład:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
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.isStrictTypeFiltering
Używana z parametrem
includeType
. Gdy ma wartośćtrue
, zwracane są tylko miejsca pasujące do określonych typów określonych przezincludeType
. Jeśli ma wartość false (fałsz), odpowiedź domyślna może zawierać miejsca, które nie pasują do określonych typów.locationBias
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ć
locationRestriction
lublocationBias
, ale nie obie te wartości.locationRestriction
określa region, w którym muszą znajdować się wyniki, alocationBias
– region, w którym wyniki muszą znajdować się w pobliżu, ale mogą być poza nim.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:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(latitude: 20, longitude: 30), radius: 2.0)
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.
- Jeśli
locationRestriction
Określa obszar wyszukiwania. Wyniki spoza określonego obszaru nie są zwracane. Określ region jako prostokątny widoczny obszar. Informacje o definiowaniu widocznego obszaru znajdziesz w opisie
locationBias
.Możesz określić
locationRestriction
lublocationBias
, ale nie obie te wartości.locationRestriction
określa region, w którym muszą znajdować się wyniki, alocationBias
– region, w którym wyniki muszą znajdować się w pobliżu, ale mogą być poza nim.-
maxResultCount
Określa maksymalną liczbę zwracanych wyników wyszukiwania miejsc. Wartość musi mieścić się w przedziale od 1 do 20 (domyślnie) włącznie.
minRating
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.
-
priceLevels
Ogranicz wyszukiwanie do miejsc z określonymi cenami. Domyślnie wybrane są wszystkie poziomy cen.
Określ tablicę zawierającą co najmniej 1 wartość określoną przez
PriceLevel
.Na przykład:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
Określa kolejność wyświetlania wyników w odpowiedzi na podstawie typu zapytania:
- W przypadku zapytania kategorialnego, np. „Restauracje w Krakowie”, domyślna jest wartość
.relevance
(pozycjonuj wyniki według trafności wyszukiwania). Możesz ustawićrankPreference
na.relevance
lub.distance
(pozycję wyników według odległości). - W przypadku zapytania, które nie ma określonej kategorii, np. „Mountain View, CA”, zalecamy pozostawienie ustawienia
rankPreference
nieskonfigurowane.
- W przypadku zapytania kategorialnego, np. „Restauracje w Krakowie”, domyślna jest wartość
regionCode
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.
Wyświetlanie atrybucji w aplikacji
Jeśli aplikacja wyświetla informacje uzyskane ze strony GMSPlacesClient
, np. zdjęcia i opinie, musi też wyświetlać wymagane informacje o źródłach.
Na przykład właściwość reviews
obiektu GMSPlacesClient
zawiera tablicę z maksymalnie 5 obiektami GMSPlaceReview
. Każdy obiekt GMSPlaceReview
może zawierać atrybucje i informacje o autorach.
Jeśli wyświetlasz opinię w aplikacji, musisz też podać informację o autorze.
Więcej informacji znajdziesz w dokumentacji dotyczącej atrybucji.