El servicio Autocomplete (nuevo) es una API de iOS que devuelve sugerencias de lugares en respuesta a una solicitud. En la solicitud, especifica un la cadena de búsqueda de texto y los límites geográficos que controlan el área de búsqueda.
El servicio de Autocomplete (nuevo) puede coincidir por completo palabras y subcadenas de la entrada, resolver nombres de lugares, direcciones y plus infraestructura. Así, las aplicaciones pueden enviar consultas de muestra, para proporcionar sugerencias de lugares en el momento.
Las sugerencias de lugares son lugares, como empresas, direcciones y puntos de interés, según la cadena de texto de entrada especificada y el área de búsqueda.
Por ejemplo, se llama a la API utilizando como entrada una cadena que contiene una cadena la entrada del usuario, “Spagh”, con el área de búsqueda limitada a la ciudad de Nueva York. La respuesta contendrá una lista de sugerencias de lugares que coinciden con la búsqueda. cadena y el área de búsqueda, como el restaurante llamado "Cafe Spaghetti", junto con detalles sobre el lugar.
Las sugerencias de lugares que se muestran están diseñadas para presentarlas al usuario. de seleccionar el lugar deseado. Puedes hacer una Place Details (Nuevo) para obtener más información sobre cualquiera de las sugerencias de lugares mostradas.
Solicitudes a Autocomplete (nuevas)
Crea una solicitud de autocompletado llamando a un método en el
GMSPlaceClient
Puedes pasar parámetros en el
GMSAutocompleteRequest
. La respuesta proporciona sugerencias de Autocomplete
GMSAutocompletePlaceSuggestion
.
La clave de API y los parámetros query
son obligatorios. También puedes incluir
GMSAutocompleteSessionToken
asociar solicitudes a una sesión de facturación y
GMSAutocompleteFilter
para aplicarla a los resultados.
Para obtener más información sobre los parámetros obligatorios y opcionales, consulta la sección de parámetros de este documento.
Swift
let token = GMSAutocompleteSessionToken() let northWestBounds = CLLocationCoordinate2DMake(40.921628, -73.700051) let southEastBounds = CLLocationCoordinate2DMake(40.477398, -74.259087) let filter = GMSAutocompleteFilter() filter.types = [kGMSPlaceTypeRestaurant] filter.locationBias = GMSPlaceRectangularLocationOption(northWestBounds, southEastBounds) let request = GMSAutocompleteRequest(query:"Spagh") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D northEast = CLLocationCoordinate2DMake(37.388162, -122.088137); CLLocationCoordinate2D southWest = CLLocationCoordinate2DMake(37.395804, -122.077023); GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ kGMSPlaceTypeRestaurant ]; filter.locationBias = GMSPlaceRectangularLocationOption(northEast, southWest); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let center = (37.3913916, -122.0879074) let northEast = (37.388162, -122.088137) let southWest = (37.395804, -122.077023) let bias = RectangularCoordinateRegion(northEast: northEast, southWest: southWest) let filter = AutocompleteFilter(types: [ .restaurant ], origin: center, coordinateRegionBias: bias) let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): // Handle suggestions. case .failure(let placesError): // Handle error. }
Respuestas de Autocomplete (nuevo)
El autocompletado devuelve un array de hasta cinco
GMSAutocompleteSuggestion
de instancias. El array contiene lo siguiente:
placeID
types
: Tipos que se aplican a este lugar.distanceMeters
: Distancia desde el origen.attributedFullText
: Es el texto completo legible de una sugerencia.attributedPrimaryText
: Es el texto principal legible de una sugerencia.attributedSecondaryText
: Es el texto secundario legible de una sugerencia.structuredFormat
: Es el nombre específico y el texto que genera ambigüedades, como ciudad o región.
Parámetros obligatorios
consulta
Cadena de texto en la que se realiza la búsqueda Especifica palabras completas y subcadenas, coloca nombres, direcciones y Plus Codes. El El servicio de Autocomplete (nuevo) devuelve coincidencias de candidatos con base en esta cadena y ordena los resultados según la relevancia percibida.
Parámetros opcionales
Tipos
Un lugar solo puede tener un único tipo principal de los tipos Tabla
A o Table
B asociada.
Por ejemplo, el tipo principal podría ser mexican_restaurant
o steak_house
.
De forma predeterminada, la API muestra todos los lugares según el parámetro input
.
independientemente del valor de tipo primario asociado con el lugar. Restringir resultados
sean de un tipo primario o de un tipo primario determinado pasando el
Parámetro types
.
Usa este parámetro para especificar hasta cinco valores de tipo de la Tabla A o Table B. Un lugar debe coincidir uno de los valores de tipo principal especificado que se incluirán en la respuesta.
La solicitud se rechaza con un error INVALID_REQUEST
en los siguientes casos:
- Se especifican más de cinco tipos.
- Se especifican todos los tipos no reconocidos.
países
Incluir solo resultados de la lista de regiones especificadas como un array de hasta 15 ccTLD ("de nivel superior dominio") valores de dos caracteres. Si se omite, no se aplican restricciones a la respuesta. Por ejemplo, para limitar las regiones a Alemania y Francia, haz lo siguiente:
Swift
let filter = GMSAutocompleteFilter() filter.countries = ["DE", "FR"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.countries = @[ @"DE", @"FR" ];
GooglePlacesSwift
let filter = AutocompleteFilter(countries: ["DE", "FR"])
Si especificas locationRestriction
y countries
, los resultados
ubicado en el área de intersección de ambos parámetros de configuración.
inputOffset
El desplazamiento de caracteres Unicode basado en cero que indica la posición del cursor en
input
La posición del cursor puede influir en las predicciones que se muestran. Si
vacío, su valor predeterminado es la longitud de input
.
locationBias o locationRestriction
Puedes especificar locationBias
o locationRestriction
, pero no ambos, para definir
en el área de búsqueda. Piensa en locationRestriction
como la especificación de la región
los resultados deben estar dentro y locationBias
como especificación de la región a la que
los resultados deben estar cerca, pero pueden estar fuera del área.
locationBias
especifica un área para buscar. Esta ubicación sirve como sesgo, lo que significa que pueden devolverse resultados cerca de la ubicación especificada, incluso resultados fuera del área especificada.locationRestriction
especifica un área para buscar. Los resultados fuera del no se devuelven el área especificada.
Especifica la región locationBias
o locationRestriction
como rectangular
viewport o como un círculo.
Un círculo se define por el punto central y el radio en metros. El radio debe ser
entre 0.0 y 50,000.0, inclusive. El valor predeterminado es 0.0. Para
locationRestriction
, debes establecer el radio en un valor superior a 0.0.
De lo contrario, la solicitud no muestra resultados.
Por ejemplo:
Swift
let center = CLLocationCoordinate2DMake(40.730610, -73.935242) let radius = 1000.0 filter.locationBias = GMSPlaceCircularLocationOption(center, radius)
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(40.730610, -73.935242); radius = 1000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceCircularLocationOption(center, radius);
GooglePlacesSwift
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
Un rectángulo es un viewport de latitud y longitud, representado en forma diagonal
frente a low
y high
puntos. Un viewport se considera una región cerrada
lo que significa que incluye su límite. Los límites de latitud deben variar entre -90 y
90 grados inclusive, y los límites de longitud deben oscilar entre -180 y 180
grados inclusive:
- Si
low
=high
, el viewport consta de ese solo punto. - Si
low.longitude
>high.longitude
, el intervalo de longitud se invierte (el viewport cruza la línea de longitud de 180 grados). - Si
low.longitude
= -180 grados yhigh.longitude
= 180 grados, la viewport incluye todas las longitudes. - Si
low.longitude
= 180 grados yhigh.longitude
= -180 grados, la El intervalo de longitud está vacío.
Tanto low
como high
se deben completar, y el cuadro representado no se puede
vacío. Un viewport vacío genera un error.
Por ejemplo, este viewport abarca por completo la ciudad de Nueva York:
Swift
let high = CLLocationCoordinate2DMake(40.921628, -73.700051) let low = CLLocationCoordinate2DMake(40.477398, -74.259087) let filter = GMSAutocompleteFilter() filter.locationBias = GMSPlaceRectangularLocationOption(high, low)
Objective-C
CLLocationCoordinate2D high = CLLocationCoordinate2DMake(40.477398, -74.259087); CLLocationCoordinate2D low = CLLocationCoordinate2DMake(440.921628, -73.700051); GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceRectangularLocationOption(high, low);
GooglePlacesSwift
let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087) let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051) let filter = AutocompleteFilter(coordinateRegionBias: bias)
origin
Punto de origen a partir del cual se calcula la distancia en línea recta al
destino (se muestra como distanceMeters
). Si se omite este valor,
la distancia en línea recta no se devolverá. Se debe especificar como latitud y
coordenadas de longitud:
Swift
let filter = GMSAutocompleteFilter() filter.origin = CLLocation(latitude: 37.395804, longitude: -122.077023)
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude: -122.077023];
GooglePlacesSwift
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
regionCode
El código de región utilizado para dar formato a la respuesta, especificado como ccTLD ("nivel superior" dominio") un valor de dos caracteres. La mayoría de los códigos ccTLD son idénticos a los códigos ISO 3166-1, con excepciones notables. Por ejemplo, el ccTLD del Reino Unido es "uk" (.co.uk), mientras que el código ISO 3166-1 es "gb" (técnicamente para la entidad de "The "The Reino Unido de Gran Bretaña e Irlanda del Norte").
Si especificas un código de región no válido, la API muestra un INVALID_ARGUMENT
.
. El parámetro puede afectar los resultados según la ley aplicable.
sessionToken
Los tokens de sesión son cadenas generadas por el usuario que hacen un seguimiento Las llamadas de Autocomplete (nuevas) se consideran "sesiones". Autocomplete (nuevo) usa tokens de sesión para agrupar los las fases de consulta y selección de una búsqueda de autocompletado del usuario en una sesión discreta para la facturación. Para obtener más información, consulta Sesión tokens.
Ejemplos de Autocomplete (nuevo)
Cómo usar locationRestriction y locationBias
Autocomplete (nuevo) utiliza la personalización de IP de forma predeterminada para
controlar el área de búsqueda. Con la personalización de IP, la API utiliza la dirección IP de la
para sesgar los resultados. De manera opcional, puedes usar locationRestriction
o
locationBias
, pero no ambos, para especificar
un área para buscar.
La restricción de ubicación especifica el área a buscar. Resultados fuera del especificado no se devuelven. En el siguiente ejemplo, se usa la restricción de ubicación la solicitud a una restricción de ubicación circular con un radio de 5,000 metros en San Francisco:
Swift
let token = GMSAutocompleteSessionToken() let center = CLLocationCoordinate2DMake(37.775061, -122.419400) let radius = 5000.0 let filter = GMSAutocompleteFilter() filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius) let request = GMSAutocompleteRequest(query:"Piz") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400); radius = 5000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationRestriction = GMSPlaceCircularLocationOption(center, radius); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let center = (37.775061, -122.419400) let radius = 5000.0 let restriction = CircularCoordinateRegion(center: center, radius: radius) let filter = AutocompleteFilter(coordinateRegionRestriction: restriction) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Con el sesgo de ubicación, la ubicación funciona como un sesgo, lo que significa que los resultados alrededor de se puede mostrar la ubicación especificada, incluso resultados fuera de la ubicación especificada en una sola área de almacenamiento en etapa intermedia. En el siguiente ejemplo, se cambia la solicitud anterior para usar el sesgo de ubicación:
Swift
let token = GMSAutocompleteSessionToken() let center = CLLocationCoordinate2DMake(37.775061, -122.419400) let radius = 5000.0 let filter = GMSAutocompleteFilter() filter.locationBias = GMSPlaceCircularLocationOption(center, radius) let request = GMSAutocompleteRequest(query:"Piz") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
CLLocationCoordinate2D center = CLLocationCoordinate2DMake(37.775061, -122.419400); radius = 5000.0; GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.locationBias = GMSPlaceCircularLocationOption(center, radius); GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Sicilian piz"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let center = (37.775061, -122.419400) let radius = 5000.0 let bias = CircularCoordinateRegion(center: center, radius: radius) let filter = AutocompleteFilter(coordinateRegionBias: bias) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Sicilian piz", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Tipos de uso
Usa el parámetro de tipos para restringir los resultados de una solicitud a fin de que sean de un determinado tipo como se indica en la Tabla A y Tabla B. Puedes especificar un de hasta cinco valores. Si se omite, se muestran todos los tipos.
En el siguiente ejemplo, se especifica una cadena de consulta de “Soccer” y usa los tipos
parámetro para restringir los resultados a establecimientos de tipo
"sporting_goods_store"
:
Swift
let token = GMSAutocompleteSessionToken() let filter = GMSAutocompleteFilter() filter.types = ["sporting_goods_store"] let request = GMSAutocompleteRequest(query:"Soccer") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText))") } } })
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ "sporting_goods_store" ]; GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Soccer"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ]) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Soccer", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Usar origen
Cuando incluyes el parámetro origin
en la solicitud, especificado como
coordenadas de latitud y longitud, la API incluye la distancia en línea
del origen al destino en la respuesta. La respuesta devuelve
distancia como distanceMeters
.
En este ejemplo, se establece el origen en el centro de San Francisco:
Swift
let token = GMSAutocompleteSessionToken() let origin = CLLocation(latitude: 37.7749, longitude: -122.4194) let filter = GMSAutocompleteFilter() filter.origin = origin let request = GMSAutocompleteRequest(query:"Amoeba") request.filter = filter request.sessionToken = token GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { ( results, error ) in if let error = error { print("Autocomplete error: \(error)") return } if let autocompleteResults = results { for result in autocompleteResults { print("Result \(String(describing: result.placeSuggestion?.placeID)) with \(String(describing: result.placeSuggestion?.attributedFullText)) and distance: \(String(describing: result.placeSuggestion?.distanceMeters))") } } })
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.origin = [[CLLocation alloc] initWithLatitude:37.395804 longitude:-122.077023]; GMSAutocompleteRequest *request = [[GMSAutocompleteRequest alloc] initWithQuery:@"Amoeba"]; request.sessionToken = token; request.filter = filter; [[GMSPlacesClient sharedClient] fetchAutocompleteSuggestionsFromRequest:request callback:^(NSArray<GMSAutocompleteSuggestion *> * results, NSError * error){ // Handle response for (GMSAutocompleteSuggestion *suggestion in results) { if (suggestion.placeSuggestion) { // Show place suggestion data. } } }];
GooglePlacesSwift
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.7749, longitude: -122.4194)) let token = AutocompleteSessionToken() let autocompleteRequest = AutocompleteRequest(query: "Amoeba", sessionToken: token, filter: filter) switch await placesClient.fetchAutocompleteSuggestions(with: autocompleteRequest) { case .success(let autocompleteSuggestions): for suggestion in autocompleteSuggestions { switch suggestion { case .place: // Show place suggestion data. } } case .failure(let placesError): // Handle error. }
Atribuciones
Puedes usar Autocomplete (nuevo), incluso sin un mapa. Si muestras un mapa, debe ser un mapa de Google. Cuándo se muestra sugerencias del servicio Autocomplete (nuevo) sin un mapa, debes incluir el logotipo de Google que se muestra intercalado con la búsqueda campo/resultados. Para obtener más información, consulta Mostrar el logotipo de Google y de los usuarios.