Der Dienst „Autocomplete (New)“ ist eine iOS-API, gibt Ortsvorschläge als Antwort auf eine Anfrage zurück. Geben Sie in der Anfrage Textsuchzeichenfolge und geografischen Grenzen, die den Suchbereich steuern.
Der Dienst „Autocomplete (New)“ kann bei vollständiger Wörter und Teilzeichenfolgen der Eingabe, die Ortsnamen, Adressen und plus Codes. Anwendungen können Abfragen daher im Namen des Nutzers , um spontan Ortsvorschläge bereitzustellen.
Vorschläge für Orte sind Orte, z. B. Unternehmen, Adressen und Punkte basierend auf der angegebenen Textzeichenfolge und dem Suchbereich der Eingabe.
Beispiel: Sie rufen die API mit einem String auf, der einen partiellen Nutzereingabe „Spagh“ eingeben, wobei der Suchbereich auf New York City beschränkt ist. Die Antwort enthält dann eine Liste mit Ortsvorschlägen, die der Suche entsprechen. Suchbereich eingeben, z. B. das Restaurant "Cafe Spaghetti", sowie Details über den Ort.
Die zurückgegebenen Ortsvorschläge sind so konzipiert, dass sie dem Nutzer angezeigt werden, damit um den gewünschten Ort auszuwählen. Sie können Place Details (Neu) Anforderung, mehr zu erhalten Informationen zu den zurückgegebenen Ortsvorschlägen.
Autocomplete (New)-Anfragen
Erstellen Sie eine Anfrage zur automatischen Vervollständigung, indem Sie eine Methode für die
GMSPlaceClient
Sie können Parameter in der
GMSAutocompleteRequest
-Objekt enthält. Die Antwort liefert Autocomplete-Vorschläge innerhalb einer
GMSAutocompletePlaceSuggestion
-Objekt enthält.
Der API-Schlüssel und die Parameter query
sind erforderlich. Sie können auch
GMSAutocompleteSessionToken
um Anfragen einer Abrechnungssitzung zuzuordnen
GMSAutocompleteFilter
die auf die Ergebnisse angewendet werden sollen.
Weitere Informationen zu erforderlichen und optionalen Parametern finden Sie im Abschnitt zu den Parametern in diesem Dokument.
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. }
Autocomplete (New) – Antworten
Die automatische Vervollständigung gibt ein Array von bis zu fünf
GMSAutocompleteSuggestion
Instanzen. Das Array enthält:
placeID
types
: Für diesen Ort geltende Typen.distanceMeters
: Entfernung vom Startort.attributedFullText
: Vollständiger visuell lesbarer Text eines Vorschlags.attributedPrimaryText
: Klar lesbarer Primärtext eines VorschlagsattributedSecondaryText
: menschenlesbarer Sekundärtext eines Vorschlags.structuredFormat
: der spezifische Name mit dem eindeutigen Text, z. B. Stadt oder Region
Erforderliche Parameter
Abfrage
Die Textzeichenfolge, nach der gesucht werden soll. Vollständige Wörter und Teilzeichenfolgen angeben, Namen, Adressen und Plus Codes. Die Der Dienst „Autocomplete (New)“ gibt mögliche Übereinstimmungen zurück basierend auf diesem String und ordnet die Ergebnisse nach erkannter Relevanz.
Optionale Parameter
Typen
Ein Ort kann nur einen einzigen primären Typ vom Typ Tabelle haben
A oder Tabelle
B verknüpft ist.
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 mit dem Ort verknüpften primären Typwert. Ergebnisse einschränken
einem bestimmten Primärtyp oder primären Typen entsprechen, indem Sie den Parameter
types
-Parameter.
Verwenden Sie diesen Parameter, um bis zu fünf Typwerte aus der Tabelle A oder Tabelle B) Ein Ort muss übereinstimmen Einer der angegebenen Werte des primären Typs, der in die Antwort aufgenommen werden soll.
In folgenden Fällen wird die Anfrage mit dem Fehler INVALID_REQUEST
abgelehnt:
- Es sind mehr als fünf Typen angegeben.
- Alle nicht erkannten Typen wurden angegeben.
Länder
Nur Ergebnisse aus der Liste der angegebenen Regionen einschließen, die als Array angegeben sind bis zu 15 ccTLD (Top-Level-Domain) Domain") aus zwei Zeichen bestehen. Wenn keine Angabe gemacht wird, 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" ];
GooglePlacesSwift
let filter = AutocompleteFilter(countries: ["DE", "FR"])
Wenn Sie sowohl locationRestriction
als auch countries
angeben, sind die Ergebnisse
sich im Schnittbereich der beiden Einstellungen befindet.
inputOffset
Der nullbasierte Unicode-Zeichen-Offset, der die Cursorposition in
input
Die Cursorposition kann beeinflussen, welche Vorhersagen zurückgegeben werden. Wenn
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
im Suchbereich. Stellen Sie sich locationRestriction
vor,
um die Region anzugeben,
müssen sich die Ergebnisse befinden, und locationBias
steht für die Region, in der
Ergebnisse müssen in der Nähe sein, können sich aber auch außerhalb des Bereichs befinden.
locationBias
gibt das Gebiet an, in dem gesucht werden soll. Dieser Standort dient als Verzerrung, Das bedeutet, dass Ergebnisse in der Nähe des angegebenen Standorts zurückgegeben werden können, einschließlich Ergebnisse außerhalb des angegebenen Bereichs.locationRestriction
gibt das Gebiet an, in dem gesucht werden soll. Ergebnisse außerhalb von angegebenen Bereich nicht zurückgegeben.
Region locationBias
oder locationRestriction
als Rechteck angeben
Darstellungsbereichs oder als Kreis.
Ein Kreis wird durch einen Mittelpunkt und einen Radius in Metern definiert. Der Umkreis muss
zwischen 0,0 und 50000,0 (einschließlich) liegt. Der Standardwert ist 0,0. Für
locationRestriction
, müssen Sie den Radius auf einen Wert größer als 0,0 festlegen.
Andernfalls gibt die Anfrage keine Ergebnisse zurück.
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);
GooglePlacesSwift
let center = CLLocationCoordinate2DMake(40.477398, -74.259087) let bias = CircularCoordinateRegion(center: center, radius: 1000.0) let filter = AutocompleteFilter(coordinateRegionBias: bias)
Ein Rechteck ist ein Darstellungsbereich mit Breiten- und Längengrad, der als zwei diagonal dargestellte
gegenüber den Punkten low
und high
. Ein Darstellungsbereich gilt als geschlossener Bereich,
d. h., sie umfasst ihre Grenzen. Die Breitengradgrenzen müssen zwischen -90 und
90 Grad (einschließlich) und die Längengradgrenzen müssen zwischen -180 und 180 liegen.
Grad einschließlich:
- Wenn
low
=high
, besteht der Darstellungsbereich aus diesem einzelnen Punkt. - Wenn
low.longitude
>high.longitude
wird der Längengradbereich invertiert (der Darstellungsbereich die 180-Grad-Längenlinie überschreitet). - Wenn
low.longitude
= -180 Grad undhigh.longitude
= 180 Grad ist, der Darstellungsbereich alle Längengrade enthält. - Wenn
low.longitude
= 180 Grad undhigh.longitude
= -180 Grad, Längengradbereich ist leer.
Sowohl low
als auch high
müssen ausgefüllt werden und das dargestellte Feld darf nicht
leer. Ein leerer Darstellungsbereich führt zu einem Fehler.
Dieser Darstellungsbereich schließt beispielsweise New York City vollständig ein:
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)
origin
Der Ursprungspunkt, von dem aus die direkte Entfernung zum
Ziel (zurückgegeben als distanceMeters
). Wird dieser Wert weggelassen,
wird nicht zurückgegeben. Muss als Breitengrad und
Längengradkoordinaten:
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
Der Regionscode, der zum Formatieren der Antwort verwendet wird, angegeben als ccTLD (Top-Level-Domain). Domain") aus zwei Zeichen bestehen. Die meisten ccTLD-Codes entsprechen den ISO 3166-1-Codes, wobei einige nennenswerte Ausnahmen. Die ccTLD des Vereinigten Königreichs lautet beispielsweise „uk“ (.co.uk), während der ISO 3166-1-Code „gb“ lautet (technisch für die Rechtspersönlichkeit Vereinigtes Königreich“).
Wenn Sie einen ungültigen Regionscode angeben, gibt die API ein INVALID_ARGUMENT
zurück.
Fehler. Der Parameter kann sich gemäß geltendem Recht auf Ergebnisse auswirken.
sessionToken
Sitzungstokens sind vom Nutzer erstellte Strings, Autocomplete (New)-Aufrufe werden als „Sitzungen“ bezeichnet. Bei der automatischen Vervollständigung (New) werden Sitzungstokens verwendet, um Abfrage- und Auswahlphasen einer vom Nutzer automatisch vervollständigten Suche in einer eigenständigen Sitzung zu Abrechnungszwecken. Weitere Informationen finden Sie unter Sitzung Tokens
Beispiele für Autocomplete (New)
„locationRestriction“ und „locationBias“ verwenden
Bei „Autocomplete (New)“ wird standardmäßig die IP-Gewichtung verwendet.
den Suchbereich anpassen. Bei der IP-Gewichtung verwendet die API die IP-Adresse der
verwendet, um die Ergebnisse zu gewichten. Optional können Sie locationRestriction
oder
locationBias
, aber nicht beides, um anzugeben
einen Bereich für die Suche.
Durch die Standortbeschränkung wird das zu durchsuchende Gebiet angegeben. Ergebnisse außerhalb des angegebenen werden nicht zurückgegeben. Im folgenden Beispiel wird mithilfe von Standortbeschränkung die Anfrage an eine kreisförmige Standortbeschränkung mit einem Radius von 5.000 Metern in 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:^(NSArrayG<MSAutocompleteSuggestion * >* 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. }
Bei der Standortgewichtung dient der Standort als Verzerrung, d. h. Ergebnisse um der angegebene Standort zurückgegeben werden kann, einschließlich Ergebnissen außerhalb des angegebenen Bereich. Im nächsten Beispiel wird die Standortgewichtung für die vorherige Anfrage geändert:
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. }
Nutzungsarten
Verwenden Sie den Parameter „types“, um die Ergebnisse einer Anfrage auf einen bestimmten Wert zu beschränken. wie in der Tabelle aufgeführt A und Tabelle B) Sie können ein Array mit bis zu fünf Werten. Wenn keine Angabe gemacht wird, werden alle Typen zurückgegeben.
Im folgenden Beispiel wird der Abfragestring „Fußball“ angegeben. und verwendet die Typen
Parameter zur Beschränkung der Ergebnisse auf Einrichtungen des Typs
"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. }
Ursprung verwenden
Wenn Sie den Parameter origin
in die Anfrage aufnehmen, der als
Längen- und Breitengradkoordinaten angezeigt wird, enthält die API die Entfernung
in der Antwort vom Start- zum Zielpunkt. Die Antwort gibt den
Entfernung als distanceMeters
.
In diesem Beispiel wird als Startpunkt 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:^(NSArrayG<MSAutocompleteSuggestion * >* 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. }
Attribution
Sie können „Autocomplete (New)“ auch ohne eine Karte. Falls Sie eine Karte anzeigen, muss es eine Google-Karte sein. Wenn Sie Vorschläge aus dem Dienst „Autocomplete (New)“ ohne Karte, müssen Sie das Google-Logo direkt in der Suchanfrage Feld/Ergebnisse. Weitere Informationen finden Sie unter Google-Logo und Quellenangaben.