Wyszukiwanie tekstowe zwraca informacje o zbiorze miejsc na podstawie ciągu znaków. Na przykład „pizza w Krakowie” lub „sklepy obuwnicze w pobliżu Ottawa”, lub „ul. Główna 123”. W odpowiedzi usługa przesyła listę miejsc. pasującego do ciągu tekstowego i dowolnego ustawionego uprzedzenia lokalizacji.
Usługa jest szczególnie przydatna do tworzenia niejednoznacznych adresów w zautomatyzowanym systemie, i inne niż adresowe mogą być dopasowane do adresów. Przykłady niejednoznacznych zapytań dotyczących adresu to źle sformatowane adresy lub żądań zawierających składniki niezwiązane z adresem, np. nazwy firm. Żądania takie jak 2 pierwsze przykłady mogą zwrócić zero wyników, chyba że jest ustawione na podstawie lokalizacji.
„ul. Główna 10, Wielka Brytania” lub „ul. Główna 123, USA” | wiele numerów „High Street” w Wielkiej Brytanii; przy „Main Street” w USA. Zapytanie nie zwraca pożądanych wyników, chyba że jest ograniczenie lokalizacji ustawiony. |
„Restauracja sieciowa Warszawa” | Wiele miejsc „Restauracja sieciowa” lokalizacje w Nowym Jorku; brak adresu lub nawet nazwę ulicy. |
„ul. Rybaki 10, Warszawa” lub „123 Main Street, Pleasanton PL” | Tylko jedna „ulica główna” w mieście Escher w Wielkiej Brytanii; tylko jedna „ulica Główna” w amerykańskim mieście Pleasanton, Kalifornia. |
„UniqueRestaurantName Warszawa” | tylko jeden obiekt o takiej nazwie w Nowym Jorku; brak adresu które są niezbędne do rozróżniania. |
„pizzerie w Warszawie” | Zapytanie zawiera ograniczenie lokalizacji i „pizzerie”. to precyzyjnie zdefiniowany typ miejsca. Zwraca wiele wyników. |
„+1 514-670-8700” | To zapytanie zawiera numer telefonu. Zwraca wiele wyników dla: miejsc powiązanych z tym numerem telefonu. |
Uzyskaj listę miejsc za pomocą wyszukiwania tekstowego
Wyślij prośbę o wyszukiwanie tekstowe, dzwoniąc pod numer GMSPlacesClient
searchByTextWithRequest:
.
zaliczając
GMSPlaceSearchByTextRequest
, który określa parametry żądania i metodę wywołania zwrotnego typu
GMSPlaceSearchByTextResultCallback
przetwarza odpowiedź.
Obiekt GMSPlaceSearchByTextRequest
określa wszystkie wartości
wymagane i opcjonalne parametry;
w związku z danym żądaniem. Wymagane parametry to:
- Lista pól do zwrócenia w obiekcie
GMSPlace
, a także nazywaną maską pola, zgodnie z definicją za pomocą funkcjiGMSPlaceProperty
Jeśli nie określisz co najmniej jednego pola na liście pól lub jeśli pominiesz listę pól, wywołanie zwróci błąd. - Zapytanie tekstowe.
To przykładowe żądanie wyszukiwania tekstowego określa, że odpowiedź obiekty GMSPlace
zawierają nazwę i identyfikator miejsca dla każdego obiektu GMSPlace
w wyszukiwaniu
wyników. Filtruje też odpowiedź tak, by zwracała tylko miejsca typu
„restauracja”.
Swift
// Create the GMSPlaceSearchByTextRequest object. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue} let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0) // Array to hold the places in the response var placeResults: [GMSPlace] = [] 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 } placeResults = results } GMSPlacesClient.shared().searchByText(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.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.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 (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { 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 funkcji
forma
GMSPlace
obiekty, po 1 obiekcie GMSPlace
na pasujące miejsce.
Oprócz pól danych obiekt GMSPlace
w tabeli
, która zawiera następujące funkcje składowe:
-
isOpen
określa, czy dane miejsce jest w danym momencie otwarte. isOpenAtDate
określa, czy dane miejsce jest otwarte w danym dniu.
Wymagane parametry
Użyj obiektu GMSPlaceSearchByTextRequest
, aby określić wymagane
dla wyszukiwania.
-
Lista pól
Określ, które właściwości danych o miejscach mają być zwracane. Prześlij listę
GMSPlace
właściwości określające pola danych do zwrócenia. Jeśli pominiesz to pole żądanie zwróci błąd.Listy pól to dobry sposób na ich projektowanie, by uniknąć zbędnych danych, co pozwala uniknąć niepotrzebnego czasu przetwarzania opłaty rozliczeniowe.
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, w którym będzie przeprowadzane wyszukiwanie, na przykład: „restauracja”, „123 Główna” Street” lub „najlepsze miejsce, które warto odwiedzić w San Francisco”.
Parametry opcjonalne
Użyj obiektu GMSPlaceSearchByTextRequest
, aby określić opcjonalny element
dla wyszukiwania.
includedType
Ogranicza wyniki do miejsc pasujących do określonego typu zdefiniowanego przez Tabela A. Można podać tylko jeden typ. Na przykład:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
Jeśli
true
, zwróć tylko te miejsca, które są otwarte w momencie wysyłania zapytania. Jeślifalse
, zwróć wszystkie firmy bez względu na to, czy są otwarte. Miejsca, które nie określają godzin otwarcia w bazie danych Miejsc Google, zwracany, jeśli ustawisz ten parametr nafalse
.isStrictTypeFiltering
Używana z parametrem
includeType
. Po ustawieniu natrue
, tylko miejsca pasujące do typów określonych przez Zwracane są wartościincludeType
. Jeśli wartością domyślną jest false (fałsz), odpowiedź domyślna może zawierać miejsca, które nie są zgodne określonych typów.locationBias
Określa obszar wyszukiwania. Ta lokalizacja działa dyskryminująco, co oznacza, że wyniki dotyczące określonej lokalizacji, w tym wyniki poza określonym obszarem.
Możesz wybrać
locationRestriction
lublocationBias
, ale nie w obu przypadkach. ElementlocationRestriction
określa parametr regionu, w którym muszą się znajdować wyniki, orazlocationBias
jako określenie regionu, w którym wyniki muszą znajdować się w pobliżu, ale mogą się znajdować poza regionem. w pobliżu.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(40.7, -74.0), 200.0)
Prostokąt to widoczny obszar o długości i szerokości szerokości geograficznej, reprezentowany przez dwa elementy. na przekątnej i na przekątnej. Najniższy punkt wskazuje południowy zachód róg prostokąta, a najwyższy punkt reprezentuje północny wschód w prawym górnym rogu prostokąta.
Widoczny obszar jest uważany za obszar zamknięty, co oznacza, że obejmuje jego granicę. Granice szerokości geograficznej musi mieścić się w przedziale od -90 do 90 stopni włącznie i musi mieścić się w granicach długości geograficznej musi mieścić się w zakresie od -180 do 180 stopni włącznie:
- Jeśli
low
=high
, widoczny obszar składa się z: ten pojedynczy punkt. - Jeśli
low.longitude
>high.longitude
, zakres długości geograficznej jest odwrócony (widoczny obszar przecina 180 stopni linii długości geograficznej). - Jeśli
low.longitude
= -180 stopni ihigh.longitude
= 180 stopni, widoczny obszar obejmuje wszystkie długości geograficznej. - Jeśli
low.longitude
= 180 stopni ihigh.longitude
= -180 stopni, zakres długości geograficznej to puste. - 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ą . Wskaż region jako prostokątny widoczny obszar. Zobacz opis z
locationBias
.Możesz wybrać
locationRestriction
lublocationBias
, ale nie w obu przypadkach. ElementlocationRestriction
określa parametr regionu, w którym muszą się znajdować wyniki, orazlocationBias
jako określenie regionu, w którym wyniki muszą znajdować się w pobliżu, ale mogą się znajdować poza regionem. w pobliżu.-
maxResultCount
Określa maksymalną liczbę wyników miejsc do zwrócenia. Wymagana wartość z zakresu 1 i 20 (domyślnie) włącznie.
minRating
Ogranicza wyniki tylko do tych, których średnia ocena użytkowników jest wyższa niż lub jej równy. Wartości muszą mieścić się w zakresie od 0,0 do 5.0 (włącznie) przyrosty co 0,5. Na przykład: 0, 0,5, 1,0, ... , 5,0 włącznie. Wartości to w górę do najbliższej 0,5. Na przykład wartość 0, 6 eliminuje wszystkie wyników z oceną niższą 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 jedną 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 wartości zapytanie:
- W przypadku zapytania kategorialnego, np. „Restauracje w Warszawie”,
Ustawienie domyślne to
.relevance
(ranking wyników według trafności wyszukiwania). Możesz ustawićrankPreference
na.relevance
lub.distance
(ranking wyników według odległości). - W przypadku zapytań niezwiązanych z kategorią, np. „Warszawa”, zalecamy
pozostawienie zasady
rankPreference
nieskonfigurowanej.
- W przypadku zapytania kategorialnego, np. „Restauracje w Warszawie”,
Ustawienie domyślne to
regionCode
Kod regionu używany do formatowania odpowiedzi podany jako dwuznakową wartość kodu CLDR. Ten parametr może również powodować odchylenia w wynikach wyszukiwania. Nie ma wartości domyślnej.
Jeśli nazwa kraju w polu adresu w odpowiedzi jest zgodna z kodu regionu, kod kraju został pominięty w adresie.
Większość kodów CLDR jest identyczna z kodami ISO 3166-1. z kilkoma istotnymi wyjątkami. Na przykład domena ccTLD Wielkiej Brytanii to "uk" (co.uk), natomiast kod ISO 3166-1 to „gb”. (technicznie dla funkcji podmiotu „Wielkiej Brytanii i Irlandii Północnej”). Ten parametr może wpływać na wyniki w zależności od obowiązującego prawa.
Wyświetl atrybucję w swojej aplikacji
Kiedy aplikacja wyświetla informacje uzyskane z:
GMSPlacesClient
takich jak zdjęcia i opinie, aplikacja musi też wyświetlać wymagane informacje o źródłach.
Na przykład właściwość reviews
obiektu GMSPlacesClient
zawiera tablicę złożoną z maks. pięciu
GMSPlaceReview
.
obiektów. 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 i pochodzeniu danych
o pochodzeniu danych.
Więcej informacji znajdziesz w dokumentacji na temat atrybucje.