Uma Pesquisa de texto retorna informações sobre um conjunto de lugares com base em uma string. Por exemplo, "pizza em São Paulo", "loja de sapatos perto Ottawa ou "123 Main Street". O serviço responde com uma lista de locais que correspondam à string de texto e a qualquer polarização de local definida.
O serviço é especialmente útil para fazer solicitações de endereços ambíguos consultas em um sistema automatizado, e componentes da string que não fazem parte do endereço podem corresponder a empresas, bem como endereços IP internos. Exemplos de consultas de endereço ambíguas são endereços mal formatados ou solicitações que incluem componentes que não fazem parte do endereço, como nomes de empresas. Solicitações como os dois primeiros exemplos podem não retornar resultados, a menos que um local (como região, restrição de local ou direcionamento de local) está definido.
"10 High Street, Reino Unido" ou "123 Main Street, US" | Várias "High Street" no Reino Unido; várias "Main Street" nos EUA. A consulta não retorna os resultados desejáveis, a menos que haja uma restrição de local definido. |
"Restaurante de cadeia de Nova York" | Vários "restaurantes de rede" em Nova York. nenhum endereço ou até mesmo o nome da rua. |
"10 High Street, Escher Reino Unido" ou "123 Main Street, Pleasanton US" | Apenas uma "High Street" na cidade de Escher, do Reino Unido; apenas uma "Main Street" na cidade de Pleasanton, EUA. |
"UniqueRestaurantName New York" | Apenas um estabelecimento com este nome em Nova York; nenhum endereço necessário diferenciá-las. |
"pizzarias em São Paulo" | Essa consulta contém a restrição de local, e "pizzarias" é um tipo de lugar bem definido. Ela retorna vários resultados. |
"+55 (51) 4670-8700" | Esta consulta contém um número de telefone. Ela retorna vários resultados para lugares associados a esse número de telefone. |
Acessar uma lista de lugares por pesquisa de texto
Faça uma solicitação do Text Search chamando GMSPlacesClient
searchByTextWithRequest:
,
transmitir um
GMSPlaceSearchByTextRequest
objeto que define os parâmetros de solicitação e um método de retorno de chamada, do tipo
GMSPlaceSearchByTextResultCallback
,
para lidar com a resposta.
O objeto GMSPlaceSearchByTextRequest
especifica todos os
parâmetros obrigatórios e opcionais
para a solicitação. Os parâmetros obrigatórios incluem:
- A lista de campos a serem retornados no objeto
GMSPlace
, também chamada de máscara de campo, conforme definido pelaGMSPlaceProperty
Se você não especificar pelo menos um campo na lista ou se omitir na lista de campos, a chamada retornará um erro. - A consulta de texto.
Este exemplo de solicitação de pesquisa de texto especifica que os objetos GMSPlace
de resposta
contêm o nome e o ID do local de cada objeto GMSPlace
na pesquisa
resultados. Ele também filtra a resposta para retornar apenas lugares do tipo
"restaurante".
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 }
Respostas do Text Search
A API Text Search retorna uma matriz de correspondências no
forma de
GMSPlace
objetos, com um objeto GMSPlace
por lugar correspondente.
Junto com os campos de dados, o objeto GMSPlace
na
contém as seguintes funções de membro:
-
O
isOpen
calcula se um lugar está aberto em um horário determinado. isOpenAtDate
calcula se um lugar está aberto em uma determinada data.
Parâmetros obrigatórios
Use o objeto GMSPlaceSearchByTextRequest
para especificar
parâmetros para a pesquisa.
-
Lista de campos
Especifique quais propriedades dos dados de lugar serão retornadas. Transmita uma lista de
GMSPlace
que especificam os campos de dados a serem retornados. Se você omitir o campo máscara, a solicitação retornará um erro.As listas de campos são uma prática recomendada de design para garantir que você não solicite dados desnecessários, o que ajuda a evitar tempo de processamento desnecessário e cobranças de faturamento adicionais.
Especifique um ou mais dos seguintes campos:
Os campos a seguir acionam a SKU do Text Search (somente ID):
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
Os campos a seguir acionam a SKU do Text Search (Basic):
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
Os campos a seguir acionam a SKU do Text Search (avançado):
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Os campos a seguir acionam a SKU do Text Search (Preferencial):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
-
textQuery
A string de texto a ser pesquisada, por exemplo: "restaurante", "123 Main Street" ou "melhor lugar para visitar em São Paulo".
Parâmetros opcionais
Use o objeto GMSPlaceSearchByTextRequest
para especificar o
parâmetros para a pesquisa.
includedType
Restringe os resultados aos lugares correspondentes ao tipo especificado definido pelo Tabela A. Só é possível especificar um tipo. Exemplo:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
Se
true
, retorna apenas os lugares que estão abertos para funcionamento no momento em que a consulta é enviada. Sefalse
, mostrar todas as empresas independentemente do status aberto. Locais que não especificam horário de funcionamento no banco de dados do Google Places são retornado se você definir esse parâmetro comofalse
.isStrictTypeFiltering
Usado com o parâmetro
includeType
. Quando definido comotrue
, somente lugares que correspondem aos tipos especificados especificados porincludeType
são retornadas. Quando falso, o padrão, a resposta pode conter locais que não correspondem os tipos especificados.locationBias
Especifica uma área a ser pesquisada. Essa localização serve como um viés, o que significa resultados em torno do local especificado possam ser retornados, incluindo resultados fora da área especificada.
É possível especificar
locationRestriction
oulocationBias
, mas não os dois. Pense emlocationRestriction
como a especificação região onde os resultados devem estar, elocationBias
como especificando a região a que os resultados precisam estar próximos, mas que podem estar fora na área.Especifique a região como uma janela de visualização retangular ou como um círculo.
Um círculo é definido pelo ponto central e pelo raio em metros. O raio deve estar entre 0,0 e 50.000,0, inclusive. O raio padrão é 0,0. Exemplo:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
Um retângulo é uma janela de visualização de latitude e longitude, representada como dois em diagonal opostos a pontos baixo e alto. O ponto baixo marca o sudoeste e o ponto alto representa a região nordeste canto do retângulo.
Uma janela de visualização é considerada uma região fechada, ou seja, inclui seus limites. Os limites de latitude deve variar entre -90 e 90 graus, inclusive, e os limites de longitude deve variar entre -180 e 180 graus:
- Se
low
=high
, a janela de visualização consistirá em nesse único ponto. - Se
low.longitude
>high.longitude
, os o intervalo de longitude é invertido (a janela de visualização cruza o intervalo de 180 graus (linha de longitude). - Se
low.longitude
= -180 graus ehigh.longitude
= 180 graus, a janela de visualização inclui todos longitudes. - Se
low.longitude
= 180 graus ehigh.longitude
= -180 graus, o intervalo de longitude é vazio. - Se
low.latitude
>high.latitude
, os o intervalo de latitude está vazio.
- Se
locationRestriction
Especifica uma área a ser pesquisada. Os resultados fora da área especificada não são retornados. Especifique a região como uma janela de visualização retangular. Confira a descrição de
locationBias
para informações sobre como definir a janela de visualização.É possível especificar
locationRestriction
oulocationBias
, mas não os dois. Pense emlocationRestriction
como a especificação região onde os resultados devem estar, elocationBias
como especificando a região a que os resultados precisam estar próximos, mas que podem estar fora na área.-
maxResultCount
Especifica o número máximo de resultados de lugar a serem retornados. Precisa estar entre 1 e 20 (padrão).
minRating
Restringe os resultados apenas àqueles cuja avaliação média de usuários seja maior que ou iguais a esse limite. Os valores devem estar entre 0,0 e 5,0 (inclusive) incrementos de 0,5. Por exemplo: 0, 0,5, 1,0, ... , 5,0. Os valores são arredondado para a casa decimal mais próxima. Por exemplo, um valor de 0,6 elimina todas as resultados com uma classificação inferior a 1,0.
-
priceLevels
Restringir a pesquisa a lugares marcados com determinados níveis de preço. O padrão é selecionar todos os níveis de preço.
Especifique uma matriz de um ou mais valores definidos por
PriceLevel
Exemplo:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
Especifica como os resultados são classificados na resposta com base no tipo de consulta:
- Para uma consulta categórica como "Restaurantes em Nova York",
O padrão é
.relevance
(classificar os resultados por relevância da pesquisa). Você pode definirrankPreference
como.relevance
ou.distance
(classifique os resultados por distância). - Para uma consulta não categórica como "Mountain View, CA", recomendamos
não for definida para
rankPreference
.
- Para uma consulta categórica como "Restaurantes em Nova York",
O padrão é
regionCode
O código da região usado para formatar a resposta, especificado como um de dois caracteres. Esse parâmetro também pode ter um efeito de viés nos resultados da pesquisa. Não há valor padrão.
Se o nome do país do campo de endereço na resposta corresponder ao código regional, o código do país é omitido do endereço.
A maioria dos códigos CLDR é idêntica aos códigos ISO 3166-1, com algumas exceções notáveis. Por exemplo, o ccTLD do Reino Unido é "uk" (.co.uk), enquanto o código ISO 3166-1 é "gb" (tecnicamente para os "Reino Unido da Grã-Bretanha e Irlanda do Norte"). O parâmetro pode afetar os resultados com base na legislação aplicável.
Exibir atribuições no seu aplicativo
Quando seu app exibe informações recebidas de
GMSPlacesClient
,
como fotos e avaliações, o app também precisará exibir as atribuições necessárias.
Por exemplo, a propriedade reviews
do objeto GMSPlacesClient
.
contém uma matriz de até cinco
GMSPlaceReview
objetos. Cada objeto GMSPlaceReview
pode conter atribuições e atribuições de autor.
Se você exibir a avaliação no seu app, também deverá mostrar as atribuições ou os autores
atribuição.
Para mais informações, consulte a documentação atribuições.