Wyszukiwanie tekstowe zwraca informacje o zestawie miejsc na podstawie ciągu znaków. Na przykład „pizza w Krakowie”, „sklepy obuwnicze w pobliżu Ottawy” lub „ul. Główna 123”. W odpowiedzi usługa podaje listę miejsc pasujących do ciągu tekstowego i dowolne ustawione odchylenie od lokalizacji.
Ta usługa jest szczególnie przydatna do wysyłania niejednoznacznych zapytań o adres w automatycznym systemie, a komponenty niebędące adresem w ciągu znaków mogą pasować zarówno do firm, jak i adresów. Przykładami niejednoznacznych zapytań dotyczących adresu są źle sformatowane adresy lub żądania zawierające składniki niezwiązane z adresem, np. nazwę firmy. Żądania takie jak pierwsze 2 przykłady mogą nie zwracać żadnych wyników, chyba że jest ustawiona lokalizacja (np. region, ograniczenie lokalizacji lub promowanie lokalizacji).
„ul. Główna 10, Wielka Brytania” lub „ul. Główna 123, USA” | Wiele „ul. Głównej” w Wielkiej Brytanii i kilka ulic „Main Street” w Stanach Zjednoczonych. Zapytanie nie zwraca pożądanych wyników, jeśli nie ustawiono ograniczenia lokalizacji. |
„Restauracja sieciowa Warszawa” | Wiele lokalizacji „restauracji sieciowych” w Nowym Jorku, bez adresu czy nawet nazwy ulicy. |
„ul. Główna 10, Warszawa” lub „ul. Główna 123, Pleasanton PL” | W mieście Escher w Wielkiej Brytanii tylko jedna „High Street” i tylko jedna „Main Street” w amerykańskim mieście Pleasanton, Kalifornia. |
„UniqueRestaurantName Warszawa” | Tylko 1 instytucja o tej nazwie w Nowym Jorku; do odróżnienia nie trzeba podawać adresu. |
„pizzerie w Warszawie” | To zapytanie zawiera ograniczenie lokalizacji, a „pizzeria” jest dobrze zdefiniowanym typem miejsca. Zwraca wiele wyników. |
„+1 514-670-8700” | To zapytanie zawiera numer telefonu. Zwraca ono wiele wyników dotyczących miejsc powiązanych z tym numerem telefonu. |
Uzyskaj listę miejsc za pomocą wyszukiwania tekstowego
Utwórz żądanie wyszukiwania tekstowego, wywołując metodę GMSPlacesClient
searchByTextWithRequest:
i przekazując obiekt GMSPlaceSearchByTextRequest
definiujący parametry żądania oraz metodę wywołania zwrotnego typu GMSPlaceSearchByTextResultCallback
w celu obsługi odpowiedzi.
Obiekt GMSPlaceSearchByTextRequest
określa wszystkie wymagane i opcjonalne parametry żądania. Wymagane parametry to:
- Lista pól do zwrócenia w obiekcie
GMSPlace
(zwana też maską pola) zdefiniowaną przezGMSPlaceProperty
. Jeśli nie określisz co najmniej 1 pola na liście pól lub pominiesz listę pól, wywołanie zwróci błąd. - Zapytanie tekstowe.
To przykładowe żądanie wyszukiwania tekstowego określa, że odpowiedzi obiektów GMSPlace
w wynikach wyszukiwania zawierają nazwę miejsca i identyfikator miejsca dla każdego obiektu GMSPlace
. Filtruje też w odpowiedzi 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 na wyszukiwanie tekstowe
Interfejs Text Search API zwraca tablicę dopasowań w postaci obiektów GMSPlace
, z 1 obiektem GMSPlace
na pasujące miejsce.
Oprócz pól danych obiekt GMSPlace
w odpowiedzi zawiera te funkcje składowe:
- Funkcja
isOpen
określa, czy dane miejsce jest w danym momencie otwarte. isOpenAtDate
określa, czy dane miejsce jest otwarte w danym dniu.
Wymagane parametry
Aby określić parametry wyszukiwania, użyj 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
określającą pola danych do zwrócenia. Jeśli pominiesz maskę pola, żądanie zwróci błąd.Listy pól to sprawdzona metoda projektowania, dzięki której nie żądasz zbędnych danych. Pozwala to uniknąć niepotrzebnego czasu przetwarzania i opłat.
Wypełnij co najmniej jedno z tych pól:
Następujące pola aktywują kod SKU wyszukiwania tekstowego (tylko identyfikator):
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
Te pola aktywują kod SKU wyszukiwania tekstowego (podstawowego):
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
Te pola aktywują kod SKU wyszukiwania tekstowego (zaawansowane):
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Te pola aktywują kod SKU wyszukiwania tekstowego (preferowany):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
-
textQuery
Ciąg tekstowy, który ma zostać wyszukany, na przykład: „restauracja”, „ulica Główna 123” lub „najlepsze miejsce do odwiedzenia 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 określonego w tabeli A. Można podać tylko jeden typ. Na przykład:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
Jeśli ustawiona zostanie wartość
true
, zwróć tylko te miejsca, które są otwarte w momencie wysyłania zapytania. W przypadku wartościfalse
zwróć wszystkie firmy niezależnie od tego, czy są otwarte. Miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, są zwracane, jeśli ustawisz ten parametr na wartośćfalse
.isStrictTypeFiltering
Używana z parametrem
includeType
. Jeśli ustawisz wartośćtrue
, zwracane będą tylko miejsca pasujące do typów określonych przez atrybutincludeType
. Jeśli wartością domyślną jest 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 działa jako odchylenie, 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 oba jednocześnie. PolelocationRestriction
określa region, w którym muszą się znajdować wyniki, alocationBias
określa region, w którym wyniki muszą znajdować się w pobliżu, ale mogą znajdować się poza tym obszarem.Określ region jako prostokątny widoczny lub okrągły obszar.
Okrąg jest wyznaczany 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, przedstawiony jako dwa punkty po przekątnej, znajdujące się naprzeciwko dolnego i wyższego punktu. Punkt dolny oznacza południowy róg prostokąta, a najwyższy – północno-wschodni róg prostokąta.
Widoczny obszar jest uważany za obszar zamknięty, co oznacza, że obejmuje swoją granicę. Granice szerokości geograficznej muszą mieścić się w przedziale od -90 do 90 stopni włącznie, a granice długości geograficznej 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. - 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 będą zwracane. Wskaż region jako prostokątny widoczny obszar. Informacje o definiowaniu widocznego obszaru znajdziesz w opisie obiektu
locationBias
.Możesz określić
locationRestriction
lublocationBias
, ale nie oba jednocześnie. PolelocationRestriction
określa region, w którym muszą się znajdować wyniki, alocationBias
określa region, w którym wyniki muszą znajdować się w pobliżu, ale mogą znajdować się poza tym obszarem.-
maxResultCount
Określa maksymalną liczbę wyników miejsc do zwrócenia. 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 wyższa 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 o ocenie niższej niż 1,0.
-
priceLevels
Ogranicz wyszukiwanie do miejsc oznaczonych na określonych poziomach cen. Domyślnie wybrane są wszystkie poziomy cen.
Określ tablicę z co najmniej 1 wartością zdefiniowaną przez
PriceLevel
.Na przykład:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
Określa kolejność wyników w odpowiedzi na podstawie typu zapytania:
- W przypadku zapytania kategorialnego, takiego jak „Restauracje w Nowym Jorku”, domyślna wartość to
.relevance
(ranking wyników według trafności wyszukiwania). Możesz ustawićrankPreference
na.relevance
lub.distance
(ranking wyników według dystansu). - W przypadku zapytania niezwiązanego z kategorią, np. „Mountain View, CA”, zalecamy pozostawienie wartości
rankPreference
nieskonfigurowanej.
- W przypadku zapytania kategorialnego, takiego jak „Restauracje w Nowym Jorku”, domyślna wartość to
regionCode
Kod regionu używany do formatowania odpowiedzi podany jako wartość dwuznakowego kodu CLDR. Ten parametr może też mieć wpływ 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 zostanie pominięty w adresie.
Większość kodów CLDR jest identyczna z kodami ISO 3166-1 z kilkoma wyjątkami. Na przykład domena ccTLD Wielkiej Brytanii to „uk” (.co.uk), a kod ISO 3166-1 to „gb” (technicznie dla podmiotu „Wielka Brytania i Irlandia Północna”). Ten parametr może wpływać na wyniki w zależności od obowiązującego prawa.
Wyświetl atrybucję w swojej aplikacji
Gdy aplikacja wyświetla informacje uzyskane z usługi 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ę maksymalnie 5 obiektów GMSPlaceReview
. Każdy obiekt GMSPlaceReview
może zawierać informacje o atrybucji lub autorach.
Jeśli wyświetlasz opinię w aplikacji, musisz też podać informacje o autorze lub pochodzeniu danych.
Więcej informacji znajdziesz w dokumentacji dotyczącej atrybucji.