Il servizio Autocomplete (nuovo) è un'API iOS che restituisce suggerimenti sui luoghi in risposta a una richiesta. Nella richiesta, specifica una stringa di ricerca testuale e limiti geografici che controlli l'area di ricerca.
Il servizio Autocomplete (nuovo) può trovare corrispondenze con parole e sottostringhe complete dell'input, risolvendo nomi di luoghi, indirizzi e plus codici. Le applicazioni possono quindi inviare query mentre l'utente digita delle query, per fornire suggerimenti immediati.
I suggerimenti di luoghi sono luoghi, ad esempio attività, indirizzi e punti d'interesse, in base alla stringa di testo di input e all'area di ricerca specificate.
Ad esempio, chiami l'API utilizzando come input una stringa che contiene un input parziale dell'utente, "Spagh", con l'area di ricerca limitata a New York. La risposta contiene un elenco di suggerimenti di luoghi che corrispondono alla stringa di ricerca e all'area di ricerca, come il ristorante "Gastronomia degli spaghetti", insieme ai dettagli sul luogo.
I suggerimenti di luoghi restituiti sono progettati per essere presentati all'utente in modo che possa selezionare il luogo desiderato. Puoi presentare una richiesta Dettagli luogo (nuova) per ottenere maggiori informazioni su uno qualsiasi dei suggerimenti di luoghi restituiti.
Richieste di completamento automatico (nuove)
Crea una richiesta di completamento automatico chiamando un metodo su GMSPlaceClient
.
Puoi trasmettere i parametri nell'oggetto GMSAutocompleteRequest
. La risposta fornisce suggerimenti di completamento automatico all'interno di un oggetto GMSAutocompletePlaceSuggestion
.
La chiave API e i parametri query
sono obbligatori. Puoi anche includere GMSAutocompleteSessionToken
per associare le richieste a una sessione di fatturazione e GMSAutocompleteFilter
per applicare le richieste ai risultati.
Per ulteriori informazioni sui parametri obbligatori e facoltativi, consulta la sezione dedicata ai parametri di questo 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. }
Risposte di completamento automatico (nuove)
Il completamento automatico restituisce un array di un massimo di cinque istanze GMSAutocompleteSuggestion
. L'array contiene:
placeID
types
: tipi applicabili a questo luogo.distanceMeters
: distanza dall'origine.attributedFullText
: testo completo leggibile di un suggerimento.attributedPrimaryText
: testo principale leggibile di un suggerimento.attributedSecondaryText
: testo secondario leggibile di un suggerimento.structuredFormat
: il nome specifico e il testo che disambigua, ad esempio la città o la regione.
Parametri obbligatori
query
La stringa di testo in cui eseguire la ricerca. Specifica parole e sottostringhe complete, nomi di luoghi, indirizzi e plus code. Il servizio di completamento automatico (nuovo) restituisce le corrispondenze dei candidati in base a questa stringa e ordina i risultati in base alla pertinenza percepita.
Parametri facoltativi
Tipi
A un luogo può essere associato un solo singolo tipo principale dei tipi Tabella A o Tabella B.
Ad esempio, il tipo principale potrebbe essere mexican_restaurant
o steak_house
.
Per impostazione predefinita, l'API restituisce tutte le posizioni in base al parametro input
,
indipendentemente dal valore del tipo principale associato al luogo. Limita i risultati
in modo che siano di un determinato tipo principale o di un determinato tipo primario passando il
parametro types
.
Utilizza questo parametro per specificare fino a cinque valori di tipo dalla Tabella A o dalla Tabella B. Un luogo deve corrispondere a uno dei valori di tipo principale specificati da includere nella risposta.
La richiesta viene rifiutata con un errore INVALID_REQUEST
se:
- Sono specificati più di cinque tipi.
- Vengono specificati tipi non riconosciuti.
paesi
Includi solo i risultati dell'elenco delle regioni specificate, specificate come array di massimo 15 ccTLD ("dominio di primo livello") a due caratteri. Se omesso, non vengono applicate limitazioni alla risposta. Ad esempio, per limitare le regioni a Germania e Francia:
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"])
Se specifichi sia locationRestriction
sia countries
, i risultati vengono
posizionati nell'area di intersezione delle due impostazioni.
inputOffset
L'offset del carattere Unicode su base zero che indica la posizione del cursore in input
. La posizione del cursore può influire sulle previsioni restituite. Se
vuoto, il valore predefinito è la lunghezza di input
.
locationBias o locationRestriction
Puoi specificare locationBias
o locationRestriction
, ma non entrambi, per definire
l'area di ricerca. Pensa a locationRestriction
come a una specifica della regione in cui devono trovarsi i risultati e a locationBias
a una specifica della regione vicina ai risultati, che però possono essere al di fuori dell'area.
locationBias
specifica un'area in cui eseguire la ricerca. Questa località funge da bias, il che significa che possono essere restituiti risultati relativi alla località specificata, compresi quelli al di fuori dell'area specificata.locationRestriction
specifica un'area in cui eseguire la ricerca. I risultati al di fuori dell'area specificata non vengono restituiti.
Specifica la regione locationBias
o locationRestriction
come area visibile rettangolare o circolare.
Un cerchio viene definito dal centro e dal raggio in metri. Il raggio deve essere compreso tra 0,0 e 50.000,0 inclusi. Il valore predefinito è 0,0. Per locationRestriction
, devi impostare il raggio su un valore maggiore di 0,0.
In caso contrario, la richiesta non restituisce alcun risultato.
Ad esempio:
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 rettangolo è un'area visibile di latitudine e longitudine, rappresentata da due punti low
e high
in diagonale. Un'area visibile è considerata
un'area chiusa, cioè include il proprio confine. I limiti di latitudine devono essere compresi tra -90 e 90 gradi inclusi, mentre quelli di longitudine devono essere compresi tra -180 e 180 gradi inclusi:
- Se
low
=high
, l'area visibile è composta da quel singolo punto. - Se
low.longitude
>high.longitude
, l'intervallo di longitudine viene invertito (l'area visibile supera la linea di longitudine di 180 gradi). - Se
low.longitude
= -180 gradi ehigh.longitude
= 180 gradi, l'area visibile include tutte le longitudini. - Se
low.longitude
= 180 gradi ehigh.longitude
= -180 gradi, l'intervallo di longitudine è vuoto.
È necessario compilare entrambi i campi low
e high
e la casella rappresentata non può essere vuota. Un'area visibile vuota genera un errore.
Ad esempio, questa area visibile racchiude completamente New York City:
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)
origine
Il punto di origine da cui calcolare la distanza in linea retta dalla
destinazione (restituito come distanceMeters
). Se questo valore viene omesso,
la distanza retta non verrà restituita. Devono essere specificate come coordinate
di latitudine e longitudine:
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
Il codice regione utilizzato per formattare la risposta, specificato come valore di due caratteri ccTLD ("dominio di primo livello"). La maggior parte dei codici ccTLD è identica ai codici ISO 3166-1, con alcune eccezioni degne di nota. Ad esempio, il ccTLD del Regno Unito è "uk " (.co.uk), mentre il codice ISO 3166-1 è"gb " (tecnicamente per l'entità "The United Kingdom of Gran Bretagna e Irlanda del Nord").
Se specifichi un codice regione non valido, l'API restituisce un errore INVALID_ARGUMENT
. Il parametro può influire sui risultati in base alla legge vigente.
sessionToken
I token di sessione sono stringhe generate dall'utente che monitorano le chiamate di completamento automatico (nuove) come "sessioni". Autocomplete (Nuovo) utilizza i token di sessione per raggruppare le fasi di query e selezione della ricerca di completamento automatico di un utente in una sessione distinta ai fini della fatturazione. Per maggiori informazioni, consulta Token di sessione.
Esempi di completamento automatico (nuovi)
Utilizza locationRestriction e locationBias
Il completamento automatico (nuova) utilizza la differenziazione IP per impostazione predefinita per controllare l'area di ricerca. Con la differenziazione per IP, l'API utilizza l'indirizzo IP del dispositivo per differenziazione dei risultati. Facoltativamente, puoi utilizzare locationRestriction
o
locationBias
, ma non entrambi, per specificare
un'area in cui eseguire la ricerca.
La limitazione di località specifica l'area in cui eseguire la ricerca. I risultati al di fuori dell'area specificata non vengono restituiti. L'esempio seguente utilizza la limitazione di località per limitare la richiesta a una limitazione di località circolare con un raggio di 5000 metri centrato su 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 questa tipologia, la località funge da bias, nel senso che è possibile restituire risultati relativi alla località specificata, compresi quelli al di fuori dell'area specificata. L'esempio successivo modifica la richiesta precedente in modo da utilizzare la differenziazione per località:
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. }
Tipi di utilizzo
Utilizza il parametro tipi per limitare i risultati di una richiesta in modo che siano di un determinato tipo, come elencato nella Tabella A e nella Tabella B. Puoi specificare un array con un massimo di cinque valori. Se omesso, vengono restituiti tutti i tipi.
L'esempio seguente specifica una stringa di query di "Calcio" e utilizza il parametro
type per limitare i risultati agli stabilimenti di 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. }
Usa origine
Quando includi nella richiesta il parametro origin
, specificato come
coordinate di latitudine e longitudine, l'API include nella risposta la distanza in linea retta
dall'origine alla destinazione. La risposta restituisce la distanza come distanceMeters
.
Questo esempio imposta l'origine in base al centro di 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. }
Attribuzioni
Puoi usare Autocomplete (Nuova) anche senza una mappa. Se mostri una mappa, deve essere una mappa di Google. Quando visualizzi suggerimenti del servizio di completamento automatico (nuovo) senza mappa, devi includere il logo di Google mostrato in linea con i campi o i risultati di ricerca. Per ulteriori informazioni, consulta la sezione Mostrare il logo Google e le attribuzioni.