Autocomplete (New) gibt Ortsvorschläge in Antwort auf eine Anfrage, die eine Textsuchzeichenfolge und geografische Grenzen enthält die den Suchbereich steuern. Automatische Vervollständigung kann übereinstimmen auf vollständige Wörter und Teilzeichenfolgen der Eingabe, die Auflösung von Ortsnamen, Adressen und Plus Codes. Ihre Anwendung kann Abfragen senden während der Nutzer tippt, um spontan Vorschläge für Orte und Suchanfragen bereitzustellen.
Beispiel: Sie rufen Autocomplete mit einer String, der die Teileingabe des Nutzers „Sicilian piz“ mit Suchbereich enthält in San Francisco, Kalifornien. Die Antwort enthält dann eine Liste der Orte, Vervollständigungen, die mit der Suchzeichenfolge und dem Suchbereich übereinstimmen, z. B. das Restaurant namens „Sicilian Pizza Kitchen“.
Die zurückgegebenen Ortsvorschläge sind so konzipiert, dass sie dem Nutzer angezeigt werden, um Ihnen zu helfen, den gewünschten Ort auswählen. Sie können Place Details (Neu) Anforderung, mehr zu erhalten Informationen zu allen zurückgegebenen Ortsvorschlägen
Autocomplete (New)-Anfragen
Ihre App kann eine Liste mit vervollständigten Ortsnamen und/oder
der API für die automatische Vervollständigung, indem Sie
PlacesClient.findAutocompletePredictions()
,
übergeben
FindAutocompletePredictionsRequest
-Objekt enthält. Im Beispiel unten sehen Sie einen vollständigen Aufruf
PlacesClient.findAutocompletePredictions()
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Sicilian piz") .setRegionCode("ES") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Autocomplete (New) – Antworten
Die API gibt eine
FindAutocompletePredictionsResponse
in einem
Task
Die
FindAutocompletePredictionsResponse
enthält eine Liste mit bis zu fünf
AutocompletePrediction
-Objekte, die vorhergesagte Orte darstellen. Die Liste ist möglicherweise leer, wenn
der Abfrage und den Filterkriterien entspricht.
Für jeden vorgeschlagenen Ort können Sie die folgenden Methoden aufrufen, um einen Ort abzurufen Details:
getFullText(CharacterStyle)
den vollständigen Text einer Ortsbeschreibung zurück. Dabei handelt es sich um eine Kombination Primär- und Sekundärtext. Beispiel: "Eiffelturm, Avenue Anatole France, Paris, France. Außerdem können Sie mit dieser Methode die Abschnitte der die der Suchanfrage einem Stil Ihrer Wahl entsprechen.CharacterStyle
Der ParameterCharacterStyle
ist optional. Setzen Sie es auf null, wenn Sie irgendwelche Hervorhebungen.getPrimaryText(CharacterStyle)
gibt den Haupttext zurück, der einen Ort beschreibt. Dies ist normalerweise der Name des Beispiele: Eiffel Tower und 123 Pitt StreetgetSecondaryText(CharacterStyle)
gibt den Nebentext einer Ortsbeschreibung zurück. Dies ist nützlich, Beispiel: als zweite Zeile, wenn automatisch vervollständigte Suchanfragen angezeigt werden. Beispiele: Avenue Anatole France, Paris, France und Sydney, New South Wales.getPlaceId()
gibt die Orts-ID des vorhergesagten Orts zurück. Eine Orts-ID ist eine Kennung zur eindeutigen Identifizierung eines Ortes, die Sie verwenden können, um diePlace
-Objekt zu erstellen. Weitere Informationen zu Orts-IDs finden Sie unter Autocomplete, siehe Place Details (Neu). Allgemein Informationen zu Orts-IDs finden Sie unter Orts-IDs Übersicht.getTypes()
gibt die Liste der mit diesem Ort verknüpften Ortstypen zurück.getDistanceMeters()
gibt die Entfernung zwischen diesem Ort und dem in der Anfrage angegebener Ursprung.
Erforderliche Parameter
-
Abfrage
Die Textzeichenfolge, nach der gesucht werden soll. Geben Sie vollständige Wörter und Teilzeichenfolgen an, Ortsnamen, Adressen und Plus Codes. „Autocomplete (New)“-Dienst gibt mögliche Übereinstimmungen basierend auf diesem String zurück und ordnet die Ergebnisse basierend auf ihre wahrgenommene Relevanz.
Rufen Sie zum Festlegen des Abfrageparameters die Methode
setQuery()
auf. beim Erstellen desFindAutocompletePredictionsRequest
-Objekts.
Optionale Parameter
-
Primäre Typen
Eine Liste mit bis zu fünf Typwerten aus Typen Tabelle A oder Tabelle B zum Filtern der in der Antwort zurückgegebenen Orte. Ein Ort muss mit einem der angegebenen Werte des primären Typs übereinstimmen, um in die Antwort aufgenommen zu werden.
Ein Ort kann nur einen primären Typ vom Typ haben. Tabelle A oder Tabelle B verknüpft ist, damit nichts. Der primäre Typ kann beispielsweise
"mexican_restaurant"
oder"steak_house"
.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.
Rufen Sie zum Festlegen des primären Typenparameters die Methode
setTypesFilter()
auf. beim Erstellen desFindAutocompletePredictionsRequest
-Objekts. -
Länder
Nur Ergebnisse aus der Liste bestimmter Länder einschließen (eine Liste von bis zu 15 Ländern) ccTLD („Top-Level-Domain“) aus zwei Zeichen bestehen. Wenn keine Angabe gemacht wird, werden keine Einschränkungen auf die Antwort angewendet. Beispiel: zur Beschränkung der Regionen auf Deutschland und Frankreich:
Wenn Sie sowohl
locationRestriction
als auchincludedRegionCodes
angeben, befinden sich die Ergebnisse im Schnittbereich der beiden Einstellungen.Rufen Sie zum Festlegen des Länderparameters die Methode
setCountries()
auf. beim Erstellen desFindAutocompletePredictionsRequest
-Objekts. -
Eingabe-Offset
Der nullbasierte Unicode-Zeichen-Offset, der die Cursorposition in der Abfrage angibt. Die Cursorposition kann beeinflussen, welche Vorhersagen zurückgegeben werden. Wenn das Feld leer ist, wird standardmäßig das Länge der Abfrage.
Rufen Sie zum Festlegen des Eingabe-Offset-Parameters die Methode
setInputOffset()
auf. beim Erstellen desFindAutocompletePredictionsRequest
-Objekts. Standortgewichtung oder Standortbeschränkung
Sie können eine Standortgewichtung oder aber nicht beides, um den Suchbereich zu definieren. Stellen Sie sich eine Standortbeschränkung die Region, in der sich die Ergebnisse befinden müssen, und die Standortgewichtung wie Sie geben die Region an, in der sich die Ergebnisse befinden müssen. Der Hauptunterschied besteht darin, mit Standortverzerrung können trotzdem Ergebnisse außerhalb der angegebenen Region zurückgegeben werden.
Standortgewichtung
Gibt das Gebiet an, in dem gesucht werden soll. Dieser Standort dient als Verzerrung und nicht als Einschränkung, sodass die Ergebnisse außerhalb des angegebenen Bereichs liegt, kann trotzdem zurückgegeben werden.
Rufen Sie zum Festlegen des Parameters für die Standortgewichtung die
setLocationBias()
auf. beim Erstellen desFindAutocompletePredictionsRequest
-Objekts.Standortbeschränkung
Gibt das Gebiet an, in dem gesucht werden soll. Ergebnisse außerhalb des angegebenen Bereichs werden nicht zurückgegeben.
Rufen Sie zum Festlegen des Parameters für die Standortbeschränkung den Parameter
setLocationRestriction()
auf. beim Erstellen desFindAutocompletePredictionsRequest
-Objekts.
Geben Sie die Standortgewichtung oder Region für die Standortbeschränkung als rechteckigen Darstellungsbereich oder als Kreis.
Ein Kreis wird durch einen Mittelpunkt und einen Radius in Metern definiert. Der Radius muss zwischen 0,0 und 50000,0 (einschließlich). Der Standardwert ist 0,0. Zur Standortbeschränkung: müssen Sie den Radius auf einen Wert größer als 0,0 festlegen. Andernfalls gibt die Anfrage Keine Ergebnisse.
Ein Rechteck ist der Darstellungsbereich mit Breiten- und Längengraden, diagonal gegenüberliegende
low
- undhigh
-Punkte. Ein Darstellungsbereich wird als geschlossene Region, d. h., sie umfasst ihre Begrenzung. Die Breitengradgrenzen muss zwischen -90 und einschließlich 90 Grad liegen und die Längengrenzen muss zwischen -180 und 180 Grad liegen:- Wenn
low
=high
, besteht der Darstellungsbereich aus diesem einzelnen Punkt. - Wenn
low.longitude
>high.longitude
, der Längengradbereich ist invertiert (der Darstellungsbereich überschreitet die 180-Grad-Längenlinie). - Wenn
low.longitude
= -180 Grad undhigh.longitude
= 180 Grad ist, enthält der Darstellungsbereich alle Längengrade. - Wenn
low.longitude
= 180 Grad undhigh.longitude
= -180 Grad, Längengradbereich ist leer.
Sowohl
low
als auchhigh
müssen ausgefüllt werden und das dargestellte Feld darf nicht leer sein. Ein leerer Darstellungsbereich führt zu einem Fehler.- Wenn
-
Ursprung
Der Ursprungspunkt, von dem aus die direkte Entfernung zum Ziel (Zugriff über
getDistanceMeters()
) Wenn dieser Wert gleich ausgelassen, wird keine geradlinige Entfernung zurückgegeben. Muss angegeben werden als Längen- und Breitengrade:Rufen Sie zum Festlegen des Parameters „origin“ den
setOrigin()
auf. beim Erstellen desFindAutocompletePredictionsRequest
-Objekts. -
Regionscode
Der Regionscode, mit dem die Antwort formatiert wurde, einschließlich der Adressformatierung, angegeben als ccTLD („Top-Level-Domain“) aus zwei Zeichen bestehen. Die meisten ccTLD-Codes entsprechen den ISO 3166-1-Codes, mit einigen nennenswerten 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 des Vereinigten Königreichs Großbritannien und Nordirland“).
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.Rufen Sie zum Festlegen des Regionscodeparameters die Methode
setRegionCode()
auf. beim Erstellen desFindAutocompletePredictionsRequest
-Objekts. -
Sitzungstoken
Sitzungstokens sind vom Nutzer erstellte Strings, Autocomplete (New)-Aufrufe werden als „Sitzungen“ bezeichnet. Bei der Autocomplete-Funktion werden Sitzungstokens verwendet, Gruppieren Sie die Abfrage- und Auswahlphasen einer Nutzersuche mit automatischer Vervollständigung in einer separaten Sitzung Abrechnungszwecke. Die Sitzung beginnt, wenn die Der Nutzer beginnt mit der Eingabe einer Suchanfrage und endet, wenn er einen Ort auswählt. Jede Sitzung kann mehrere Abfragen enthalten, gefolgt von einer Ortsauswahl. Sobald eine Sitzung abgeschlossen ist, ist das Token nicht mehr gültig; Ihre Anwendung muss ein neues Token generieren. für jede Sitzung. Wir empfehlen, Sitzungstokens für alle programmatischen Sitzungen mit automatischer Vervollständigung (wenn Sie ein Fragment einbetten oder die automatische Vervollständigung mithilfe von Intent erstellt wird, erledigt die API dies automatisch.
Für die automatische Vervollständigung wird ein
AutocompleteSessionToken
um jede Sitzung zu identifizieren. Ihre App sollte ein neues Sitzungstoken Beginn jeder neuen Sitzung. Übergeben Sie dann dasselbe Token zusammen mit einer Orts-ID beim nachfolgenden Aufruf vonfetchPlace()
, um Ortsdetails für den vom Nutzer ausgewählten Ort abzurufen.Rufen Sie zum Festlegen des Sitzungstoken-Parameters die Methode
setSessionToken()
auf. beim Erstellen desFindAutocompletePredictionsRequest
-Objekts.Weitere Informationen finden Sie unter Sitzungstokens
Beispiele für Autocomplete (New)
Standortbeschränkung und Standortgewichtung 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 location Einschränkung oder Standortverzerrung, aber nicht , um ein zu durchsuchendes Gebiet anzugeben.
Durch die Standortbeschränkung wird das zu durchsuchende Gebiet angegeben. Ergebnisse außerhalb des angegebenen werden nicht zurückgegeben. Im folgenden Beispiel wird die Anfrage mit einer Standortbeschränkung auf einen kreisförmige Standortbeschränkung mit einem Radius von 5.000 Metern um San Francisco:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Bei der Standortgewichtung dient der Standort als Verzerrung, d. h. Ergebnisse um den angegebene Position 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:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Primäre Typen verwenden
Verwenden Sie den Parameter primary types, um die Ergebnisse eines bestimmten Anfrage eines bestimmten Typs sein, wie in der Tabelle A und Tabelle B. Sie können angeben, 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 primäre
types-Parameter, um Ergebnisse auf Einrichtungen des Typs zu beschränken
"sporting_goods_store"
:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); final List<Place.Field> primaryTypes = Arrays.asList("sporting_goods_store"); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Soccer") .setIncludedPrimaryTypes(primaryTypes) .setLocationBias(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Wenn Sie den Parameter „primary types“ weglassen, können die Ergebnisse Einrichtungen enthalten
eines Typs, den Sie möglicherweise nicht haben möchten, wie z. B. "athletic_field"
.
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
vom Start bis zum Ziel in der Antwort (Zugriff über
getDistanceMeters()
)
In diesem Beispiel wird als Startpunkt das Zentrum von San Francisco festgelegt:
Places.initializeWithNewPlacesApiEnabled(context, apiKey); final List<Field> placeFields = getPlaceFields(); LatLng center = new LatLng(37.7749, -122.4194); CircularBounds circle = CircularBounds.newInstance(center, /* radius = */ 5000); final FindAutocompletePredictionsRequest autocompletePlacesRequest = FindAutocompletePredictionsRequest.builder() .setQuery("Amoeba") .setOrigin(center) .setLocationRestriction(circle) .build()); placesClient.findAutocompletePredictions(autoCompletePlacesRequest) .addOnSuccessListener( (response) -> { List<AutocompletePrediction> predictions = response.getResult().getAutocompletePredictions(); } ).addOnFailureListener( exception -> { Log.e(TAG, "some exception happened" + exception.getMessage()); }) );
Attribution
Sie können „Autocomplete (New)“ auch ohne Karte verwenden. Wenn aber es muss eine Google Maps-Karte sein. Wenn Sie Vorhersagen von „Autocomplete (New)“ ohne Karte verwenden, können Sie muss das Google-Logo enthalten, das im Suchfeld bzw. in den Suchergebnissen angezeigt wird. Für Weitere Informationen finden Sie unter Google-Logo und Quellenangaben.