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. |
„Sieć restauracji Nowy Jork” | Wiele restauracji należących do „sieciowej restauracji” w Nowym Jorku; brak adresu ulicy ani nawet nazwy 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 Nowym Jorku” | Zapytanie zawiera ograniczenie lokalizacji i „pizzerie”. to precyzyjnie zdefiniowany typ miejsca. Zwraca ono wiele wyników. |
„+1 514-670-8700” | To zapytanie zawiera numer telefonu. Zwraca wiele wyników dla: miejsc powiązanych z tym numerem telefonu. |
Wyświetlanie listy miejsc na podstawie 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 wymagane i opcjonalne parametry żądania. Wymagane parametry:
- 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; } } } ];
Pakiet SDK Miejsc Swift na iOS (wersja przedpremierowa)
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.
Pobieranie stanu otwartości
Obiekt GMSPlacesClient
zawiera funkcję członka o nazwie isOpenWithRequest
(isOpenRequest
w języku Swift i isPlaceOpenRequest
w GooglePlacesSwift), która zwraca odpowiedź wskazującą, czy miejsce jest obecnie otwarte, zgodnie z czasem określonym w rozmowie.
Ta metoda przyjmuje jeden argument typu GMSPlaceIsOpenWithRequest
, który zawiera:
- Obiekt
GMSPlace
lub ciąg znaków określający identyfikator miejsca. Więcej informacji o tworzeniu obiektu Miejsce z wymaganymi polami znajdziesz w artykule Szczegóły miejsca. - Opcjonalny obiekt
NSDate
(Obj-C) lubDate
(Swift), który określa czas, jaki chcesz sprawdzić. Jeśli nie określisz czasu, domyślnie zostanie ustawiona bieżąca chwila. - Metoda
GMSPlaceOpenStatusResponseCallback
do obsługi odpowiedzi. >
Metoda GMSPlaceIsOpenWithRequest
wymaga ustawienia w obiekcie GMSPlace
tych pól:
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
Jeśli te pola nie są podane w obiekcie Place lub jeśli przekazujesz identyfikator miejsca, metoda używa GMSPlacesClient GMSFetchPlaceRequest:
do ich pobrania.
isOpenWithRequest
odpowiedź
isOpenWithRequest
zwraca obiekt GMSPlaceIsOpenResponse
zawierający wartość logiczną o nazwie status
, która wskazuje, czy firma jest otwarta, zamknięta, czy też jej stan jest nieznany.
Język | Wartość, jeśli otwarta | Wartość, jeśli jest zamknięta | Wartość, jeśli stan jest nieznany |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (wersja testowa) | true |
false |
nil |
Płatności za usługę isOpenWithRequest
- Pola
GMSPlacePropertyUTCOffsetMinutes
iGMSPlacePropertyBusinessStatus
są naliczane w ramach podstawowego kodu SKU danych podstawowych. Pozostałe godziny otwarcia są naliczane w ramach kodu SKU szczegółów (zaawansowane). - Jeśli obiekt
GMSPlace
ma już te pola z poprzedniego żądania, nie naliczymy kolejnej opłaty.
Przykład: wysłanie żądania GMSPlaceIsOpenWithRequest
Przykład poniżej pokazuje, jak zainicjować obiekt GMSPlaceIsOpenWithRequest
w istniejącym obiekcie GMSPlace
.
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
GooglePlacesSwift
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
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.
Podaj co najmniej 1 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 powodują wyświetlenie SKU w wyszukiwarce tekstowej (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
, zwracaj tylko te miejsca, które są otwarte w momencie wysł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żywany 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. Niski punkt oznacza południowo-zachodni róg prostokąta, a wysoki – północno-wschodni.
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 linię długości geograficznej 180°). - 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 podać wartość
locationRestriction
lublocationBias
, ale nie obie. Pamiętaj, żelocationRestriction
określa region, w którym muszą się znajdować wyniki, alocationBias
– region, w pobliżu którego muszą się znajdować wyniki, ale nie muszą znajdować się w tym obszarze.-
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) z 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 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
(uporządkuj wyniki 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.