Completamento automatico dei luoghi (novità)

Seleziona la piattaforma: Android iOS JavaScript Servizio web

Il servizio Autocomplete (nuovo) è un'API iOS che restituisce dei suggerimenti sui luoghi in risposta a una richiesta. Nella richiesta, specifica stringa di ricerca testuale e limiti geografici che controllano l'area di ricerca.

Il servizio Autocomplete (nuovo) può corrispondere alla configurazione parole e sottostringhe dell'input, risolvendo i nomi dei luoghi, gli indirizzi e codici. Le applicazioni possono quindi inviare query a nome dell'utente per fornire suggerimenti immediati sui luoghi.

I suggerimenti di luoghi sono luoghi, ad esempio attività, indirizzi e punti di l'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 numero input utente, "Spagh", con l'area di ricerca limitata alla città di New York. La risposta contiene un elenco di suggerimenti di luoghi che corrispondono alla ricerca stringa e area di ricerca, come il ristorante "Bar Caffè", insieme ai dettagli sul luogo.

I suggerimenti di luoghi restituiti sono progettati per essere presentati all'utente di poter selezionare il luogo desiderato. Puoi creare Dettagli luogo (Novità) per visualizzarne altri informazioni su uno qualsiasi dei suggerimenti relativi ai luoghi restituiti.

Richieste di completamento automatico (nuove)

Crea una richiesta di completamento automatico chiamando un metodo sul GMSPlaceClient Puoi trasmettere i parametri GMSAutocompleteRequest . La risposta fornisce suggerimenti di completamento automatico all'interno di un GMSAutocompletePlaceSuggestion .

La chiave API e i parametri query sono obbligatori. Puoi anche includere GMSAutocompleteSessionToken di associare le richieste a una sessione di fatturazione GMSAutocompleteFilter da applicare 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 massimo cinque GMSAutocompleteSuggestion istanza. 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 città o regione.

Parametri obbligatori

query

La stringa di testo in cui eseguire la ricerca. Specifica parole complete e sottostringhe, posiziona nomi, indirizzi e plus code. La Il servizio di completamento automatico (nuovo) restituisce corrispondenze dei candidati in base a questa stringa e ordina i risultati in base alla pertinenza percepita.

Parametri facoltativi

tipi

Un luogo può avere un solo singolo tipo principale tra i 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, a prescindere dal valore del tipo principale associato al luogo. Limita risultati di un certo tipo primario o di un certo tipo primario passando Parametro types.

Utilizza questo parametro per specificare fino a cinque valori di tipo da Tabella A o Tabella B Un luogo deve corrispondere uno dei valori di tipo primario 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 di regioni specificate, specificate come array di un massimo di 15 ccTLD ("ccTLD ("top-level") dominio") valori 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 sono situata nell'area di intersezione delle due impostazioni.

inputOffset

L'offset 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. Considera locationRestriction come una specifica della regione che i risultati devono essere all'interno e locationBias come specifica della regione in cui i risultati devono essere vicini, ma possono essere fuori dall'area.

  • locationBias specifica un'area in cui eseguire la ricerca. Questa località funge da bias, Ciò significa che è possibile restituire risultati per la località specificata, tra cui risultati al di fuori dell'area specificata.

  • locationRestriction specifica un'area in cui eseguire la ricerca. Risultati al di fuori del nell'area specificata non vengono restituite.

Specifica la regione locationBias o locationRestriction come rettangolare o come cerchio.

Un cerchio viene definito dal centro e dal raggio in metri. Il raggio deve essere compreso tra 0,0 e 50000,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 due volte in diagonale. di fronte a low e high punti. Un'area visibile è considerata una regione chiusa e quindi include i confini. I limiti di latitudine devono essere compresi tra -90 e 90 gradi inclusi e i limiti 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 è invertito (il l'area visibile oltrepassa la linea di longitudine di 180 gradi).
  • Se low.longitude = -180 gradi e high.longitude= 180 gradi, il include tutte le longitudini.
  • Se low.longitude = 180 gradi e high.longitude = -180 gradi, il l'intervallo di longitudine è vuoto.

È necessario compilare entrambi i campi low e high, mentre la casella rappresentata non può essere vuoto. 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 retta alla destinazione (restituita come distanceMeters). Se questo valore viene omesso, distanza in linea retta non verrà restituita. Devono essere specificati come latitudine e coordinate di 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 ccTLD ("top-level" dominio") a due caratteri. La maggior parte dei codici ccTLD è identica ai codici ISO 3166-1, con alcune 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 Regno Unito di Gran Bretagna e Irlanda del Nord").

Se specifichi un codice regione non valido, l'API restituisce un 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 Chiamate di completamento automatico (nuove) come "sessioni". Il completamento automatico (novità) utilizza i token di sessione per raggruppare fasi di query e selezione di una ricerca con completamento automatico da parte di un utente in una sessione discreta ai fini della fatturazione. Per ulteriori informazioni, consulta la sezione Sessione di token.

Esempi di completamento automatico (nuovi)

Utilizza locationRestriction e locationBias

Il completamento automatico (nuova) utilizza la differenziazione IP per impostazione predefinita controllare l'area di ricerca. Con la differenziazione per IP, l'API utilizza l'indirizzo IP del dispositivo per differenziare i risultati. Se vuoi, 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. Risultati al di fuori dell'intervallo specificato non vengono restituite. 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 a 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 la parzialità per località, questa funge da bias, ovvero per i risultati intorno a è possibile restituire la località specificata, inclusi i risultati al di fuori del geografica specifica. 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 type per limitare i risultati di una richiesta in modo che riguardino un determinato tipo come elencato in Tabella A e Tabella B Puoi specificare un array di cinque valori. Se omesso, vengono restituiti tutti i tipi.

L'esempio seguente specifica una stringa di query "Calcio" e utilizza i tipi per limitare i risultati a strutture 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 il parametro origin nella richiesta, specificato come coordinate di latitudine e longitudine, l'API include la distanza in linea retta dall'origine alla destinazione nella risposta. La risposta restituisce l'errore distanza pari a 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 utilizzare il completamento automatico (novità) anche senza una mappa. Se mostri una mappa, deve essere una mappa di Google. Quando visualizzi suggerimenti dal servizio Autocomplete (New) senza una mappa, devi includere il logo Google visualizzato in linea con la ricerca campi/risultati. Per ulteriori informazioni, consulta la sezione Visualizzazione del logo Google e attribuzioni.