Place Autocomplete (neu)

Plattform auswählen: Android iOS JavaScript Webdienst

Entwickler im Europäischen Wirtschaftsraum (EWR)

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

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 und high.longitude= 180 Grad ist, umfasst das Sichtfeld alle Längengrade.
  • Wenn low.longitude = 180 Grad und high.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.

Das „Place Autocomplete“-Widget

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, entweder multiLine oder twoLine.
  • 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
        }
      )
    }
  }
}