Place Autocomplete (nuevo)

Selecciona la plataforma: Android iOS JavaScript Servicio web

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 de un tipo primario o de un tipo primario determinado si pasas 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 y high.longitude= 180 grados, la viewport incluye todas las longitudes.
  • Si low.longitude = 180 grados y high.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.