Der Autocomplete (New)-Dienst ist eine iOS-API, die in einer Anfrage Ortsvorschläge zurückgibt. Geben Sie in der Anfrage einen Suchstring für die Textsuche und geografische Grenzen an, die den Suchbereich steuern.
Der Dienst „Autocomplete (New)“ kann vollständige Wörter und Teilstrings der Eingabe abgleichen und Ortsnamen, Adressen und Pluscodes auflösen. Anwendungen können daher Abfragen senden, während der Nutzer tippt, um Vorschläge für Orte in Echtzeit zu erhalten.
Ortsvorschläge sind Orte wie Unternehmen, Adressen und POIs, die auf dem angegebenen Eingabestring und dem Suchgebiet basieren.
Angenommen, Sie rufen die API mit einem String auf, der einen Teil der Nutzereingabe „Spagh“ enthält, wobei das Suchgebiet auf New York City beschränkt ist. Die Antwort enthält dann eine Liste mit Ortsvorschlägen, die mit dem Suchstring und dem Suchgebiet übereinstimmen, z. B. das Restaurant „Cafe Spaghetti“, sowie Details zum Ort.
Die zurückgegebenen Ortsvorschläge sollen dem Nutzer präsentiert werden, damit er den gewünschten Ort auswählen kann. Sie können eine Place Details (New)-Anfrage stellen, um weitere Informationen zu den zurückgegebenen Ortsvorschlägen zu erhalten.
Anfragen für die automatische Vervollständigung (neu)
Erstellen Sie eine autocomplete-Anfrage, indem Sie eine Methode auf GMSPlaceClient
aufrufen.
Sie können Parameter im Objekt GMSAutocompleteRequest
übergeben. Die Antwort enthält Vorschläge für die automatische Vervollständigung in einem GMSAutocompletePlaceSuggestion
-Objekt.
Der API-Schlüssel und die query
-Parameter sind erforderlich. Sie können auch GMSAutocompleteSessionToken
angeben, um Anfragen mit einer Abrechnungssitzung zu verknüpfen, und GMSAutocompleteFilter
, um sie auf die Ergebnisse anzuwenden.
Weitere Informationen zu erforderlichen und optionalen Parametern finden Sie im Abschnitt „Parameter“ dieses Dokuments.
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. } } }];
Places Swift SDK for iOS (Vorabversion)
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. }
Automatische Vervollständigung von Antworten (neu)
Die automatische Vervollständigung gibt ein Array mit bis zu fünf GMSAutocompleteSuggestion
-Instanzen zurück. Das Array enthält Folgendes:
placeID
types
: Arten, die für diesen Ort gelten.distanceMeters
: Entfernung vom Ursprung.attributedFullText
: Der vollständige, visuell lesbare Text eines Vorschlags.attributedPrimaryText
: Lesbarer Haupttext eines Vorschlags.attributedSecondaryText
: Lesbarer sekundärer Text eines Vorschlags.structuredFormat
: Der spezifische Name und der eindeutig identifizierende Text, z. B. Stadt oder Region.
Erforderliche Parameter
Abfrage
Der Textstring, in dem gesucht werden soll. Geben Sie vollständige Wörter und Teilstrings, Ortsnamen, Adressen und Plus Codes an. Der Dienst „Autocomplete (New)“ gibt anhand dieses Strings passende Vorschläge zurück und sortiert die Ergebnisse nach ihrer wahrgenommenen Relevanz.
Optionale Parameter
Typen
Ein Ort kann nur einen primären Typ aus den Typen Tabelle A oder Tabelle B haben.
Der primäre Typ kann beispielsweise mexican_restaurant
oder steak_house
sein.
Standardmäßig gibt die API alle Orte basierend auf dem Parameter input
zurück, unabhängig vom Wert des primären Typs, der mit dem Ort verknüpft ist. Sie können die Ergebnisse auf einen bestimmten primären Typ oder primäre Typen beschränken, indem Sie den Parameter types
übergeben.
Mit diesem Parameter können Sie bis zu fünf Typwerte aus Tabelle A oder Tabelle B angeben. Ein Ort muss mit einem der angegebenen primären Typwerte übereinstimmen, um in die Antwort aufgenommen zu werden.
Die Anfrage wird mit dem Fehler INVALID_REQUEST
abgelehnt, wenn:
- Es sind mehr als fünf Typen angegeben.
- Alle nicht erkannten Typen werden angegeben.
Länder
Es werden nur Ergebnisse aus der Liste der angegebenen Regionen berücksichtigt. Diese Liste muss als Array mit bis zu 15 zweistelligen Werten für ccTLDs („Top-Level-Domains“) angegeben werden. Wird sie weggelassen, werden keine Einschränkungen auf die Antwort angewendet. So beschränken Sie die Regionen beispielsweise auf Deutschland und Frankreich:
Swift
let filter = GMSAutocompleteFilter() filter.countries = ["DE", "FR"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.countries = @[ @"DE", @"FR" ];
Places Swift SDK for iOS (Vorabversion)
let filter = AutocompleteFilter(countries: ["DE", "FR"])
Wenn Sie sowohl locationRestriction
als auch countries
angeben, befinden sich die Ergebnisse im Schnittpunkt der beiden Einstellungen.
inputOffset
Der Unicode-Zeichenabstand (ab Null gezählt), der die Cursorposition in input
angibt. Die Cursorposition kann sich darauf auswirken, welche Vorschläge zurückgegeben werden. Wenn das Feld leer ist, wird standardmäßig die Länge von input
verwendet.
locationBias oder locationRestriction
Sie können locationBias
oder locationRestriction
angeben, aber nicht beides, um den Suchbereich zu definieren. Mit locationRestriction
wird die Region angegeben, in der sich die Ergebnisse befinden müssen, und mit locationBias
die Region, in deren Nähe sich die Ergebnisse befinden müssen, aber auch außerhalb des Gebiets liegen können.
locationBias
gibt einen Suchbereich an. Dieser Standort dient als Referenzpunkt. Das bedeutet, dass Ergebnisse in der Nähe des angegebenen Standorts zurückgegeben werden können, einschließlich Ergebnissen außerhalb des angegebenen Gebiets.locationRestriction
gibt einen Suchbereich an. Ergebnisse außerhalb des angegebenen Bereichs werden nicht zurückgegeben.
Geben Sie die locationBias
- oder locationRestriction
-Region als rechteckigen Darstellungsbereich oder als Kreis an.
Ein Kreis wird durch den Mittelpunkt und den Radius in Metern definiert. Der Radius muss zwischen 0,0 und 50.000,0 liegen. Der Standardwert ist 0,0. Für locationRestriction
muss der Radius einen Wert größer als 0, 0 haben.
Andernfalls werden keine Ergebnisse zurückgegeben.
Beispiel:
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);
Places Swift SDK for iOS (Vorabversion)
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
Ein Rechteck ist ein Breiten- und Längengrad-Viewport, der durch zwei diagonal gegenüberliegende Punkte low
und high
dargestellt wird. Ein Darstellungsbereich gilt als geschlossene Region, d. h., er schließt seine Begrenzung ein. Die Breitengradgrenzen müssen zwischen -90 und 90 Grad liegen und die Längengradgrenzen zwischen -180 und 180 Grad:
- Wenn
low
=high
, besteht der Darstellungsbereich aus diesem einzelnen Punkt. - Wenn
low.longitude
>high.longitude
ist, ist der Längengradbereich umgekehrt (der Darstellungsbereich schneidet den Längengrad 180). - Wenn
low.longitude
= -180 Grad undhigh.longitude
= 180 Grad ist, umfasst der Darstellungsbereich alle Längengrade. - Wenn
low.longitude
= 180 Grad undhigh.longitude
= −180 Grad ist, ist der Längengradbereich leer.
Sowohl low
als auch high
müssen ausgefüllt sein und das Feld darf nicht leer sein. Ein leerer Darstellungsbereich führt zu einem Fehler.
Dieser Ansichtsbereich umschließt beispielsweise ganz 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);
Places Swift SDK for iOS (Vorabversion)
let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087) let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051) let filter = AutocompleteFilter(coordinateRegionBias: bias)
origin
Der Startpunkt, von dem aus die Luftlinie zum Ziel berechnet wird (wird als distanceMeters
zurückgegeben). Wenn dieser Wert fehlt, wird die Luftlinie nicht zurückgegeben. Muss als Breiten- und Längengrad angegeben werden:
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];
Places Swift SDK for iOS (Vorabversion)
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
regionCode
Die Regionscode, die zum Formatieren der Antwort verwendet wird, angegeben als zweistelliger Wert einer ccTLD (Top-Level-Domain). Die meisten ccTLD-Codes entsprechen den ISO 3166-1-Codes, mit einigen Ausnahmen. Die ccTLD des Vereinigten Königreichs ist beispielsweise „uk“ (.co.uk), während der ISO 3166-1-Code „gb“ ist (technisch für die Entität „Vereinigtes Königreich von Großbritannien und Nordirland“).
Wenn Sie einen ungültigen Regionscode angeben, gibt die API den Fehler INVALID_ARGUMENT
zurück. Der Parameter kann sich auf die Ergebnisse auswirken, die gemäß anwendbarem Recht angezeigt werden.
sessionToken
Sitzungstokens sind von Nutzern generierte Strings, mit denen Aufrufe von „Autocomplete (New)“ als „Sitzungen“ erfasst werden. Bei „Autocomplete (New)“ werden Sitzungstokens verwendet, um die Abfrage- und Auswahlphasen einer Nutzeranfrage zur automatischen Vervollständigung zu Abrechnungszwecken zu einer separaten Sitzung zusammenzufassen. Weitere Informationen finden Sie unter Sitzungstokens.
Beispiele für die automatische Vervollständigung (neu)
„locationRestriction“ und „locationBias“ verwenden
Bei der automatischen Vervollständigung (neu) wird standardmäßig eine IP-Voreingenommenheit verwendet, um den Suchbereich zu steuern. Bei der IP-Voreinnahme verwendet die API die IP-Adresse des Geräts, um die Ergebnisse zu beeinflussen. Sie können optional locationRestriction
oder locationBias
verwenden, aber nicht beide, um einen Suchbereich anzugeben.
Mit der Standorteinschränkung wird der Bereich festgelegt, in dem gesucht werden soll. Ergebnisse außerhalb des angegebenen Bereichs werden nicht zurückgegeben. Im folgenden Beispiel wird die Anfrage mithilfe einer Standortbeschränkung auf einen kreisförmigen Bereich mit einem Radius von 5.000 Metern um San Francisco herum beschränkt:
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. } } }];
Places Swift SDK for iOS (Vorabversion)
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. }
Bei der Standortvorgabe dient der Standort als Vorgabe. Das bedeutet, dass Ergebnisse in der Nähe des angegebenen Standorts zurückgegeben werden können, einschließlich Ergebnissen außerhalb des angegebenen Bereichs. Im nächsten Beispiel wird die vorherige Anfrage so geändert, dass die Standortvorlage verwendet wird:
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. } } }];
Places Swift SDK for iOS (Vorabversion)
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. }
Nutzungsarten
Mit dem Parameter „types“ können Sie die Ergebnisse einer Anfrage auf einen bestimmten Typ beschränken, wie in Tabelle A und Tabelle B aufgeführt. Sie können ein Array mit bis zu fünf Werten angeben. Wenn Sie diesen Parameter weglassen, werden alle Typen zurückgegeben.
Im folgenden Beispiel wird der Suchstring „Fußball“ angegeben und die Ergebnisse werden mit dem Parameter „types“ auf Einrichtungen vom Typ "sporting_goods_store"
beschränkt:
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. } } }];
Places Swift SDK for iOS (Vorabversion)
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. }
Herkunft verwenden
Wenn Sie den Parameter origin
in der Anfrage angeben, die als Breiten- und Längengrad angegeben ist, enthält die API in der Antwort die Luftlinie vom Start- zum Zielort. Die Antwort gibt die Entfernung als distanceMeters
zurück.
In diesem Beispiel wird der Ursprung auf das Zentrum von San Francisco festgelegt:
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. } } }];
Places Swift SDK for iOS (Vorabversion)
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. }
Attribution
Sie können die automatische Vervollständigung (Neu) auch ohne Karte verwenden. Falls Sie eine Karte anzeigen, muss es eine Google-Karte sein. Wenn Sie Vorschläge des Dienstes „Autocomplete (New)“ ohne Karte anzeigen, müssen Sie das Google-Logo inline mit dem Suchfeld/den Suchergebnissen einfügen. Weitere Informationen finden Sie unter Google-Logo und Quellenangaben anzeigen.