Completamento automatico dei luoghi (novità)

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, "Sicilian piz", con l'area di ricerca limitata a San Francisco, CA. La risposta contiene un elenco di suggerimenti di luoghi corrispondenti alla stringa di ricerca e all'area di ricerca, come il ristorante "Sicilian Pizza Kitchen", 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 northEastBounds = CLLocationCoordinate2DMake(37.388162, -122.088137)
let southWestBounds = CLLocationCoordinate2DMake(37.395804, -122.077023)

let filter = GMSAutocompleteFilter()
filter.types = [kGMSPlaceTypeRestaurant]
filter.locationBias = GMSPlaceRectangularLocationOption(northEastBounds, southWestBounds)
    
let request = GMSAutocompleteRequest(query:"Sicilian piz")
request.filter = filter
request.sessionToken = token
GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { results, error in
  // Handle response
})

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 e high.longitude= 180 gradi, l'area visibile include tutte le longitudini.
  • Se low.longitude = 180 gradi e high.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.477398, -74.259087)
let low = CLLocationCoordinate2DMake(40.921628, -73.700051)

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:"Sicilian piz")
request.filter = filter
request.sessionToken = token
GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { results, error in
  // Handle response
  })

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:"Sicilian piz")
request.filter = filter
request.sessionToken = token
GMSPlacesClient.shared().fetchAutocompleteSuggestions(from: request, callback: { results, error in
  // Handle response
})

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
  // Handle response
})

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
  // Handle response
})

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.