Der Dienst „Autocomplete (New)“ ist eine iOS-API, die Ortsvorschläge als Reaktion auf eine Anfrage zurückgibt. Geben Sie in der Anfrage einen Textsuchstring und geografische Grenzen an, die den Suchbereich festlegen.
Der Dienst „Autocomplete (New)“ findet Übereinstimmungen mit vollständigen Wörtern und Teilstrings der Eingabe, sodass sich Ortsnamen, Adressen und Plus Codes zuordnen lassen. Anwendungen können Abfragen senden, während der Nutzer tippt, und schon bei der Eingabe Ortsvorschläge ausgeben.
Ortsvorschläge sind Orte wie Unternehmen, Adressen und POIs, die auf dem angegebenen Eingabetextstring und Suchgebiet basieren.
Sie rufen die API beispielsweise mit der Eingabe „Spagh“ auf und begrenzen den Suchbereich auf New York City. Die Antwort enthält dann eine Liste mit Ortsvorschlägen, die dem Suchstring und dem Suchgebiet entsprechen, z. B. das Restaurant „Cafe Spaghetti“, zusammen mit Details zum Ort.
Die zurückgegebenen Ortsvorschläge sind für die Präsentation für den Nutzer vorgesehen, 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.
Sie haben zwei Möglichkeiten, die Funktion „Autocomplete (New)“ in Ihre App einzubinden:
- Ortsvorhersagen programmatisch abrufen: Rufen Sie die API direkt auf, um Vorhersagen abzurufen und in einer benutzerdefinierten Benutzeroberfläche anzuzeigen.
- Place Autocomplete-Widget hinzufügen: Bietet eine sofort einsatzbereite automatische Vervollständigung für die Suche, bei der Vorhersagen angezeigt werden, während der Nutzer tippt.
Ortsvorhersagen programmatisch abrufen
Autocomplete (New)-Anfragen
Erstellen Sie eine Anfrage für die automatische Vervollständigung, indem Sie eine Methode für GMSPlacesClient
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 Parameter query
sind erforderlich. Sie können auch GMSAutocompleteSessionToken
einfügen, um Anfragen einer Abrechnungssitzung zuzuordnen, und GMSAutocompleteFilter
, um die Ergebnisse zu filtern.
Places Swift SDK-Version
Erstellen Sie eine Anfrage für die automatische Vervollständigung, indem Sie eine Methode für PlacesClient
aufrufen.
Sie können Parameter im Objekt AutocompleteRequest
übergeben. Die Antwort enthält Vorschläge für die automatische Vervollständigung in einem AutocompletePlaceSuggestion
-Objekt.
Der API-Schlüssel und die Parameter query
sind erforderlich. Sie können auch AutocompleteSessionToken
einfügen, um Anfragen einer Abrechnungssitzung zuzuordnen, und AutocompleteFilter
, um die Ergebnisse zu filtern.
Weitere Informationen zu erforderlichen und optionalen Parametern finden Sie im Abschnitt „Parameter“ dieses Dokuments.
Places Swift SDK
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. }
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. } } }];
Antworten von Autocomplete (neu)
Die automatische Vervollständigung gibt ein Array mit bis zu fünf GMSAutocompleteSuggestion
-Instanzen zurück. Das Array enthält:
placeID
types
: Typen, die für diesen Ort gelten.distanceMeters
: Entfernung vom Ursprung.attributedFullText
: Vollständiger, für Menschen lesbarer Text eines Vorschlags.attributedPrimaryText
: Der für Menschen lesbare primäre Text eines Vorschlags.attributedSecondaryText
: Für Menschen lesbarer sekundärer Text eines Vorschlags.structuredFormat
: Der spezifische Name und der disambiguierende Text, z. B. Stadt oder Region.
Erforderliche Parameter
Abfrage
Die Textzeichenfolge, nach der gesucht werden soll. Geben Sie vollständige Wörter und Teilstrings, Ortsnamen, Adressen und Plus Codes an. Über den Dienst „Autocomplete (New)“ werden mögliche Übereinstimmungen basierend auf dem String zurückgegeben, die nach erkannter Relevanz sortiert werden.
Optionale Parameter
sessionToken
Sitzungstokens sind nutzergenerierte Strings, mit denen Autocomplete (New)-Aufrufe nachverfolgt werden – sowohl Aufrufe über das Widget als auch programmatische Aufrufe – als „Sitzungen“. 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.
Optionale AutocompleteFilter-Parameter
Typen
Ein Ort kann nur einen primären Typ aus den Typen in 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 primären Typwert, der dem Ort zugeordnet ist. Sie können die Ergebnisse auf einen oder mehrere bestimmte 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, damit er in die Antwort aufgenommen wird.
Die Anfrage wird mit dem Fehler INVALID_REQUEST
abgelehnt, wenn:
- Es wurden mehr als fünf Typen angegeben.
- Es wurden unbekannte Typen angegeben.
Wenn Sie die Ergebnisse beispielsweise auf Sportartikelgeschäfte beschränken möchten, geben Sie diesen Typ in Ihrem AutocompleteFilter
an:
Places Swift SDK
let filter = AutocompleteFilter(types: [ PlaceType(rawValue: "sporting_goods_store") ])
Swift
let filter = GMSAutocompleteFilter() filter.types = ["sporting_goods_store"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.types = @[ "sporting_goods_store" ];
Länder
Es werden nur Ergebnisse aus der Liste der angegebenen Regionen berücksichtigt. Diese werden als Array mit bis zu 15 zweistelligen ccTLD-Werten („Top-Level-Domain“) angegeben. Wenn Sie das Flag weglassen, werden keine Einschränkungen auf die Antwort angewendet. So beschränken Sie die Regionen beispielsweise auf Deutschland und Frankreich:
Places Swift SDK
let filter = AutocompleteFilter(countries: ["DE", "FR"])
Swift
let filter = GMSAutocompleteFilter() filter.countries = ["DE", "FR"]
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.countries = @[ @"DE", @"FR" ];
Wenn Sie sowohl locationRestriction
als auch countries
angeben, befinden sich die Ergebnisse im Schnittmengenbereich der beiden Einstellungen.
inputOffset
Das nullbasierte Unicode-Zeichen-Offset, das die Cursorposition in input
angibt. Die Cursorposition kann sich darauf auswirken, welche Vorschläge zurückgegeben werden. Wenn der Wert leer ist, wird standardmäßig die Länge von input
verwendet.
locationBias oder locationRestriction
Sie können locationBias
oder locationRestriction
angeben, aber nicht beide, um den Suchbereich zu definieren. locationRestriction
gibt die Region an, in der sich die Ergebnisse befinden müssen, und locationBias
die Region, in deren Nähe sich die Ergebnisse befinden müssen, aber außerhalb derer sie sich befinden können.
Mit
locationBias
wird ein Suchbereich angegeben. Dieser Ort dient als Bias. Das bedeutet, dass Ergebnisse in der Nähe des angegebenen Orts zurückgegeben werden können, einschließlich Ergebnissen außerhalb des angegebenen Bereichs.Mit
locationRestriction
wird ein Suchbereich angegeben. Ergebnisse außerhalb des angegebenen Bereichs werden nicht zurückgegeben.
Geben Sie die Region locationBias
oder locationRestriction
als rechteckigen Viewport 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 (jeweils einschließlich). Der Standardwert ist 0,0. Für locationRestriction
müssen Sie den Radius auf einen Wert größer als 0, 0 festlegen.
Andernfalls werden keine Ergebnisse zurückgegeben.
Beispiel:
Places Swift SDK
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
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);
Ein Rechteck ist ein Darstellungsbereich für Breiten- und Längengrad, der durch zwei diagonal gegenüberliegende low
- und high
-Punkte dargestellt wird. Ein Darstellungsbereich gilt als geschlossener Bereich, d. h., er umfasst auch seine Grenze. Die Grenzen für den Breitengrad müssen zwischen -90 und 90 Grad liegen (einschließlich), und die Grenzen für den Längengrad müssen zwischen -180 und 180 Grad liegen (einschließlich):
- Wenn
low
=high
ist, besteht der Darstellungsbereich aus diesem einzelnen Punkt. - Wenn
low.longitude
>high.longitude
, wird der Längengradbereich umgekehrt (der Darstellungsbereich überschreitet die 180-Grad-Längengradlinie). - Wenn
low.longitude
= -180 Grad undhigh.longitude
= 180 Grad ist, umfasst das Sichtfeld 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 dargestellte Rechteck darf nicht leer sein. Ein leerer Viewport führt zu einem Fehler.
Beispiel: Dieser Viewport umfasst New York City vollständig:
Places Swift SDK
let northEast = CLLocationCoordinate2DMake(40.477398, -74.259087) let southWest = CLLocationCoordinate2DMake(40.921628, -73.700051) let filter = AutocompleteFilter(coordinateRegionBias: bias)
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);
origin
Der Ausgangspunkt, von dem aus die Luftlinie zum Ziel berechnet wird (als distanceMeters
zurückgegeben). Wenn dieser Wert weggelassen wird, wird die Luftlinie nicht zurückgegeben. Muss als Breiten- und Längengradkoordinaten angegeben werden:
Places Swift SDK
let filter = AutocompleteFilter(origin: CLLocation(latitude: 37.395804, longitude: -122.077023))
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];
regionCode
Der Regionscode, der zum Formatieren der Antwort verwendet wird, angegeben als Ländercode der Top-Level-Domain (ccTLD). Die meisten ccTLD-Codes entsprechen den ISO 3166-1-Codes. Es gibt jedoch einige Ausnahmen. Die ccTLD des Vereinigten Königreichs ist beispielsweise „uk“ (.co.uk), der ISO 3166-1-Code lautet „gb“ (technisch für das Land „Vereinigtes Königreich Großbritannien und Nordirland“).
Wenn Sie einen ungültigen Ländercode angeben, gibt die API einen INVALID_ARGUMENT
-Fehler zurück. Der Parameter kann sich je nach anwendbarem Recht auf die Ergebnisse auswirken.
shouldIncludePureServiceAreaBusinesses
Bei true
werden nur Unternehmen mit Einzugsgebiet im Antwortarray zurückgegeben. Ein reines Unternehmen ohne festen Standort in einem Einzugsgebiet ist ein Unternehmen, das Kunden vor Ort besucht oder direkt beliefert, aber an seiner Geschäftsadresse keine Kunden empfängt.
Beispiel:
Places Swift SDK
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Swift
let filter = AutocompleteFilter() filter.shouldIncludePureServiceAreaBusinesses = true
Objective-C
GMSAutocompleteFilter *filter = [[GMSAutocompleteFilter alloc] init]; filter.shouldIncludePureServiceAreaBusinesses = YES;
Das „Place Autocomplete“-Widget hinzufügen
Um die automatische Vervollständigung von Orten einfacher zu gestalten, können Sie das Place Autocomplete-Widget in Ihre App einbinden. Das Widget bietet eine spezielle Vollbildoberfläche, die Nutzereingaben verarbeitet und dem Nutzer Ortsvorschläge anzeigt, während AutocompletePlaceSuggestion
-Objekte an die App zurückgegeben werden. Anschließend können Sie eine Place Details (New)-Anfrage senden, um zusätzliche Informationen zu den Ortsvorschlägen zu erhalten.
Wie beim programmatischen Abrufen von Ortsvorhersagen können Sie mit dem Place Autocomplete-Widget Sitzungstokens verwenden, um Autocomplete-Anfragen zu Abrechnungszwecken in Sitzungen zu gruppieren. Sie können ein Sitzungstoken übergeben, indem Sie AutocompleteSessionToken()
aufrufen.
Wenn Sie kein Sitzungstoken angeben, wird vom Widget ein Autocomplete-Sitzungstoken für Sie erstellt, das dann über den onSelection
-Callback abgerufen werden kann. Weitere Informationen zur Verwendung von Sitzungstokens finden Sie unter Sitzungstokens.
Wenn der Bindungswert show
auf true
gesetzt ist, wird der Nutzer zu einer Vollbildansicht weitergeleitet, in der er einen Ort auswählen kann. Während der Nutzer tippt, gibt das Widget Vorschläge für Orte wie Unternehmen, Adressen und POIs zurück. Wenn der Nutzer einen Ort auswählt, ruft das Widget den onSelection
-Handler mit dem ausgewählten Ort auf und schließt die Vollbildansicht.
Parameter für das „Place Autocomplete“-Widget
Zusätzlich zu den programmatisch verfügbaren Parametern bietet das Place Autocomplete-Widget auch die folgenden Parameter.
Einblenden
show
gibt an, ob das Widget angezeigt wird.
AutocompleteUICustomization
Mit den Parametern AutocompleteUICustomization
werden die UI-Anpassungen angegeben, die auf das Widget angewendet werden sollen. Folgende Anpassungsoptionen sind verfügbar:
AutocompleteListDensity
. Mit diesem Parameter können Sie die Dichte der Vorschlagsliste auswählen, entwedermultiLine
odertwoLine
.AutocompleteUIIcon
: Mit diesem Parameter können Sie festlegen, ob das Standardsymbol für die einzelnen Listenelemente angezeigt werden soll.
onSelection
Der Closure, der ausgeführt werden soll, wenn ein Ort ausgewählt wird.
onError
Der Closure, der ausgeführt wird, wenn ein Fehler auftritt. Bei einem Fehler wird ein
PlacesError
übergeben.
Vollständiges Codebeispiel ansehen
Beispiele für die automatische Vervollständigung (neu)
„locationRestriction“ und „locationBias“ verwenden
Bei der automatischen Vervollständigung (neu) wird standardmäßig die IP-Verschiebung verwendet, um den Suchbereich zu steuern. Bei der IP-Gewichtung verwendet die API die IP-Adresse des Geräts, um die Ergebnisse zu gewichten. Optional können Sie locationRestriction
oder locationBias
verwenden, aber nicht beide, um einen Suchbereich anzugeben.
Mit der Standortbeschränkung wird der Bereich angegeben, in dem gesucht werden soll. Ergebnisse außerhalb des angegebenen Bereichs werden nicht zurückgegeben. Im folgenden Beispiel wird die Standortbeschränkung verwendet, um die Anfrage auf eine kreisförmige Standortbeschränkung mit einem Radius von 5.000 Metern zu beschränken, die auf San Francisco zentriert ist:
Places Swift SDK
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. }
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. } } }];
Bei Standort-Bias dient der Standort als Bias. Das bedeutet, dass Ergebnisse in der Nähe des angegebenen Standorts zurückgegeben werden können, auch Ergebnisse außerhalb des angegebenen Bereichs. Im nächsten Beispiel wird die vorherige Anfrage so geändert, dass der Standort-Bias verwendet wird:
Places Swift SDK
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. }
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. } } }];
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. Wird diese Option nicht angegeben, werden alle Typen zurückgegeben.
Im folgenden Beispiel wird der Suchstring „Fußball“ angegeben und der Parameter „types“ verwendet, um die Ergebnisse auf Einrichtungen des Typs "sporting_goods_store"
zu beschränken:
Places Swift SDK
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. }
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. } } }];
Ursprung verwenden
Wenn Sie den Parameter origin
in die Anfrage einfügen, angegeben als Breiten- und Längengradkoordinaten, enthält die 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:
Places Swift SDK
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. }
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 Autocomplete“-Widget hinzufügen
Places Swift SDK
struct PlaceAutocompleteDemoView: View { @State private var fetchedPlace: Place? @State private var placesError: PlacesError? @State private var showWidget = false public var body: some View { VStack { Button("Search for a place") { showWidget.toggle() } .placeAutocomplete( show: $showWidget, onSelection: { (autocompletePlaceSuggestion, autocompleteSessionToken) in Task { let placesClient = await PlacesClient.shared let fetchPlaceRequest = FetchPlaceRequest( placeID: autocompletePlaceSuggestion.placeID, placeProperties: [.displayName, .formattedAddress], sessionToken: autocompleteSessionToken ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): print("Fetched place: \(place)") self.fetchedPlace = place case .failure(let placesError): print("Failed to fetch place: \(placesError)") self.placesError = placesError } } }, onError: { placesError in self.placesError = placesError } ) } } }