Mit „Text Search (New)“ werden Informationen zu mehreren Orten auf Grundlage eines Strings zurückgegeben, z. B. „Pizza in New York“, „Schuhgeschäfte in der Nähe von Ottawa“ oder „Hauptstraße 123“. Der Dienst gibt eine Liste von Orten zurück, die dem Textstring und der festgelegten Standortgewichtung entsprechen.
Der Dienst ist besonders nützlich für mehrdeutige Adressabfragen in einem automatisierten System. Dabei können nicht adressierte Komponenten des Strings sowohl mit Unternehmen als auch mit Adressen übereinstimmen. Beispiele für mehrdeutige Adressabfragen sind schlecht formatierte Adressen oder Anfragen, die Nicht-Adresskomponenten wie Unternehmensnamen enthalten. Anfragen wie in den ersten beiden Beispielen können null Ergebnisse zurückgeben, es sei denn, ein Standort – wie eine Region, die Standortbeschränkung oder die Standortgewichtung – ist festgelegt.
„Text Search (New)“ ist mit Nearby Search (New) vergleichbar. Der Hauptunterschied zwischen den beiden besteht darin, dass Sie mit „Text Search (New)“ einen beliebigen Suchstring angeben können, während „Nearby Search (New)“ einen bestimmten Bereich für die Suche erfordert.
„10 High Street, UK“ oder „123 Main Street, US“ | Mehrere "High Streets" im Vereinigten Königreich und mehrere "Main Streets" in den USA Die Abfrage gibt nur dann die gewünschten Ergebnisse zurück, wenn eine Standortbeschränkung festgelegt ist. |
„ChainRestaurant New York“ | Mehrere „ChainRestaurant“-Standorte in New York, aber weder Adresse noch Straßenname sind vorhanden. |
„10 High Street, Escher UK“ oder „123 Main Street, Pleasanton US“ | Nur eine "High Street" in der Stadt Escher im Vereinigten Königreich und nur eine "Main Street" in Pleasanton, Kalifornien. |
„UniqueRestaurantName New York“ | Nur eine Einrichtung mit diesem Namen in New York. Zur Unterscheidung ist keine Adresse erforderlich. |
„pizzerien in new york“ | Diese Abfrage enthält die Standortbeschränkung und „Pizzerias“ ist ein klar definierter Ortstyp. Es werden mehrere Ergebnisse zurückgegeben. |
„+49 514 670 8700“ | Diese Abfrage enthält eine Telefonnummer. Für Orte, die mit dieser Telefonnummer verknüpft sind, werden mehrere Ergebnisse zurückgegeben. |
Text Search-Anfragen
Eine „Text Search“-Anfrage hat das folgende Format:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define latitude and longitude coordinates of the search area. LatLng southWest = new LatLng(37.38816277477739, -122.08813770258874); LatLng northEast = new LatLng(37.39580487866437, -122.07702325966572); // Use the builder to create a SearchByTextRequest object. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationRestriction(RectangularBounds.newInstance(southWest, northEast)).build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
In diesem Beispiel führen Sie folgende Schritte aus:
Lege die Feldliste so fest, dass sie nur
Place.Field.ID
undPlace.Field.NAME
enthält. Das bedeutet, dass diePlace
-Objekte in der Antwort, die die einzelnen übereinstimmenden Orte repräsentieren, nur diese beiden Felder enthalten.Verwenden Sie
SearchByTextRequest.Builder
, um einSearchByTextRequest
-Objekt zu erstellen, das die Suche definiert.Setzen Sie den Textabfragestring auf „Scharfes vegetarisches Essen“.
Legen Sie die maximale Anzahl der Ergebnisorte auf 10 fest. Der Standardwert und der Höchstwert sind 20.
Beschränken Sie den Suchbereich auf das durch Breiten- und Längengrade definierte Rechteck. Es werden keine Übereinstimmungen außerhalb dieses Bereichs zurückgegeben.
Fügen Sie ein
OnSuccessListener
hinzu und rufen Sie die übereinstimmenden Orte aus demSearchByTextResponse
-Objekt ab.
Text Search-Antworten
Die Klasse SearchByTextResponse
stellt die Antwort einer Suchanfrage dar. Ein SearchByTextResponse
-Objekt enthält Folgendes:
Eine Liste von
Place
-Objekten, die alle übereinstimmenden Orte darstellen, mit einemPlace
-Objekt pro übereinstimmendem Ort.Jedes
Place
-Objekt enthält nur die Felder, die von der Feldliste definiert wurden, die in der Anfrage übergeben wurde.
In der Anfrage haben Sie beispielsweise eine Feldliste so definiert:
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
Diese Feldliste bedeutet, dass jedes Place
-Objekt in der Antwort nur die Orts-ID und den Namen des entsprechenden Orts enthält. Anschließend können Sie mit den Methoden Place.getId()
und Place.getName()
in jedem Place
-Objekt auf diese Felder zugreifen.
Weitere Beispiele für den Zugriff auf Daten in einem Place
-Objekt finden Sie unter Datenfelder des Place Place-Objekts aufrufen
Erforderliche Parameter
Die erforderlichen Parameter für SearchByTextRequest
sind:
-
Liste der Felder
Geben Sie an, welche Felder mit Ortsdaten zurückgegeben werden sollen. Übergeben Sie eine Liste von
Place.Field
-Werten und geben Sie die Datenfelder an, die zurückgegeben werden sollen. Die Antwort enthält keine Standardliste der zurückgegebenen Felder.Feldlisten sind eine gute Strategie, um sicherzustellen, dass keine unnötigen Daten angefordert werden. So lassen sich unnötige Verarbeitungszeiten und Gebühren vermeiden.
Geben Sie eines oder mehrere der folgenden Felder an:
Die folgenden Felder lösen die SKU „Text Search (ID Only)“ aus:
Place.Field.ID
,Place.Field.NAME
Die folgenden Felder lösen die SKU „Text Search (Basic)“ aus:
Place.Field.ADDRESS_COMPONENTS
,Place.Field.BUSINESS_STATUS
,Place.Field.ADDRESS
,Place.Field.ICON_BACKGROUND_COLOR
,Place.Field.ICON_URL
,Place.Field.LAT_LNG
,Place.Field.PHOTO_METADATAS
,Place.Field.PLUS_CODE
,Place.Field.TYPES
,Place.Field.UTC_OFFSET
,Place.Field.VIEWPORT
,Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
Die folgenden Felder lösen die SKU „Text Search (Advanced)“ aus:
Place.Field.CURRENT_OPENING_HOURS
,Place.Field.SECONDARY_OPENING_HOURS
,Place.Field.PHONE_NUMBER
,Place.Field.PRICE_LEVEL
,Place.Field.RATING
,Place.Field.OPENING_HOURS
,Place.Field.USER_RATINGS_TOTAL
,Place.Field.WEBSITE_URI
Die folgenden Felder lösen die SKU „Text Search (Preferred)“ aus:
Place.Field.CURBSIDE_PICKUP
,Place.Field.DELIVERY
,Place.Field.DINE_IN
,Place.Field.EDITORIAL_SUMMARY
,Place.Field.RESERVABLE
,Place.Field.REVIEWS
,Place.Field.SERVES_BEER
,Place.Field.SERVES_BREAKFAST
,Place.Field.SERVES_BRUNCH
,Place.Field.SERVES_DINNER
,Place.Field.SERVES_LUNCH
,Place.Field.SERVES_VEGETARIAN_FOOD
,Place.Field.SERVES_WINE
,Place.Field.TAKEOUT
Zum Festlegen des Feldlistenparameters rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetPlaceFields()
auf. -
Textabfrage
Der Textstring, nach dem gesucht werden soll, z. B. „Restaurant“, „Hauptstraße 123“ oder „beste Sehenswürdigkeit in San Francisco“. Die API gibt mögliche Übereinstimmungen basierend auf diesem String zurück und ordnet die Ergebnisse nach erkannter Relevanz.
Um den Textabfrageparameter festzulegen, rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetTextQuery()
auf.
Optionale Parameter
Verwenden Sie das Objekt SearchByTextRequest
, um die optionalen Parameter für Ihre Anfrage anzugeben.
Enthaltener Typ
Beschränkt die Ergebnisse auf Orte, die dem in Tabelle A definierten Typ entsprechen. Es kann nur ein Typ angegeben werden. Beispiel:
setIncludedType("bar")
setIncludedType("pharmacy")
Zum Festlegen des enthaltenen Typparameters rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetIncludedType()
auf.Standortgewichtung
Gibt das Gebiet an, in dem gesucht werden soll. Dieser Standort dient als Verzerrung, d. h., Ergebnisse um den angegebenen Standort herum können zurückgegeben werden, auch solche außerhalb des angegebenen Bereichs.
Sie können die Standortbeschränkung oder die Standortgewichtung festlegen, aber nicht beides. Betrachten Sie die Standortbeschränkung als Angabe der Region, in der sich die Ergebnisse befinden müssen, und die Standortgewichtung gibt die Region an, in der sich die Ergebnisse in der Nähe befinden müssen, aber außerhalb des Gebiets liegen können.
Legen Sie den Bereich als rechteckigen Darstellungsbereich oder als Kreis fest.
Ein Kreis wird durch einen Mittelpunkt und einen Radius in Metern definiert. Der Radius muss zwischen 0,0 und 50.000,0 (einschließlich) liegen. Beispiel:
// Define latitude and longitude coordinates of the center of the search area. LatLng searchCenter = new LatLng(37.38816277477739, -122.08813770258874); // Use the builder to create a SearchByTextRequest object. // Set the radius of the search area to 500.0 meters. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationBias(CircularBounds.newInstance(searchCenter, 500.0)).build();
Ein Rechteck ist ein Darstellungsbereich mit Breiten- und Längengrad, der als zwei diagonal gegenüberliegende niedrige und hohe Punkte dargestellt wird. Der Tiefpunkt stellt die südwestliche Ecke des Rechtecks und der höchste Punkt die nordöstliche Ecke des Rechtecks dar.
Ein Darstellungsbereich gilt als geschlossener Bereich, d. h. er umfasst seine Begrenzung. Die Breitengradgrenzen müssen zwischen -90 und 90 Grad und die Längengradgrenzen zwischen -180 und 180 Grad liegen.
- Wenn
low
=high
, besteht der Darstellungsbereich aus diesem einzelnen Punkt. - Ist
low.longitude
>high.longitude
, wird der Längengradbereich umgekehrt (der Darstellungsbereich kreuzt 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 ist, ist der Längengradbereich leer. - Wenn
low.latitude
>high.latitude
ist, ist der Breitengradbereich leer.
Die Werte für „Niedrig“ und „Hoch“ müssen ausgefüllt werden. Das dargestellte Feld darf nicht leer sein. Ein leerer Darstellungsbereich führt zu einem Fehler.
Informationen zu einem rechteckigen Darstellungsbereich finden Sie beispielsweise unter Text Search-Anfragen.
Um den Parameter für die Standortgewichtung festzulegen, rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetLocationBias()
auf.- Wenn
Standortbeschränkung
Gibt das Gebiet an, in dem gesucht werden soll. Ergebnisse außerhalb des angegebenen Bereichs werden nicht zurückgegeben. Legen Sie den Bereich als rechteckigen Darstellungsbereich fest. Informationen zum Definieren des Darstellungsbereichs finden Sie in der Beschreibung der Standortverzerrung.
Sie können die Standortbeschränkung oder die Standortgewichtung festlegen, aber nicht beides. Betrachten Sie die Standortbeschränkung als Angabe der Region, in der sich die Ergebnisse befinden müssen, und die Standortgewichtung gibt die Region an, in der sich die Ergebnisse in der Nähe befinden müssen, aber außerhalb des Gebiets liegen können.
Um den Parameter für die Standortbeschränkung festzulegen, rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetLocationRestriction()
auf.-
Maximale Anzahl von Ergebnissen
Gibt die maximale Anzahl der Ortsergebnisse an, die zurückgegeben werden sollen. Der Wert muss zwischen 1 und 20 (Standardeinstellung) liegen.
Um den Parameter für die maximale Ergebnisanzahl festzulegen, rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetMaxResultCount()
auf. Mindestbewertung
Beschränkt die Ergebnisse auf Nutzer, deren durchschnittliche Nutzerbewertung größer oder gleich dieser Grenze ist. Die Werte müssen zwischen 0,0 und einschließlich 5,0 in Schritten von 0,5 liegen. Beispiel: 0, 0,5, 1,0, ... , 5,0 (jeweils einschließlich). Die Werte werden auf die nächsten 0,5 aufgerundet. Bei einem Wert von 0,6 werden beispielsweise alle Ergebnisse mit einer Bewertung unter 1,0 ausgeschlossen.
Um den Parameter für die Mindestbewertung festzulegen, rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetMinRating()
auf.Jetzt geöffnet
Bei
true
werden nur die Orte zurückgegeben, die beim Senden der Abfrage geöffnet haben. Beifalse
werden alle Unternehmen unabhängig vom Öffnungsstatus zurückgegeben. Wenn Sie diesen Parameter auffalse
festlegen, werden Orte zurückgegeben, für die in der Google Places-Datenbank keine Öffnungszeiten angegeben sind.Zum Festlegen des Parameters „Jetzt öffnen“ rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetOpenNow()
auf.-
Preisstufen
Standardmäßig enthalten die Ergebnisse Orte, an denen Dienstleistungen aller Preisstufen angeboten werden. Wenn Sie die Ergebnisse auf Orte mit bestimmten Preisstufen beschränken möchten, können Sie eine Liste ganzzahliger Werte übergeben, die den Preisstufen der Orte entsprechen, die Sie zurückgeben möchten:
1
: Der Ort bietet günstige Dienstleistungen.2
: Der Ort bietet Dienste zu moderaten Preisen an.3
: Ort bietet teure Dienstleistungen an.4
: Der Ort bietet sehr teure Dienstleistungen an.
Wenn Sie den Parameter für die Preisstufen festlegen möchten, rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetPriceLevels()
auf. Rangfolgeneinstellung
Gibt an, wie die Ergebnisse in der Antwort basierend auf der Art der Suchanfrage eingestuft werden:
- Für eine kategoriale Suchanfrage wie „Restaurants in New York City“ ist
SearchByTextRequest.RankPreference.RELEVANCE
(Ergebnisse nach Suchrelevanz sortieren) die Standardeinstellung. Sie können die Rangfolge aufSearchByTextRequest.RankPreference.RELEVANCE
oderSearchByTextRequest.RankPreference.DISTANCE
festlegen (Ergebnisse nach Entfernung sortieren). - Für eine nicht kategoriale Abfrage wie „Mountain View, CA“ empfehlen wir, den Parameter für die Rangeinstellung nicht zu verwenden.
Zum Festlegen des Parameters für die Rangeinstellung rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetRankPreference()
auf.- Für eine kategoriale Suchanfrage wie „Restaurants in New York City“ ist
Regionscode
Der zum Formatieren der Antwort verwendete Regionscode, angegeben als zweistelliger CLDR-Code. Dieser Parameter kann auch zu Verzerrungen der Suchergebnisse führen. Es gibt keinen Standardwert.
Wenn der Ländername des Adressfelds in der Antwort mit dem Regionscode übereinstimmt, wird der Ländercode in der Adresse weggelassen.
Die meisten CLDR-Codes entsprechen den ISO 3166-1-Codes, mit einigen Ausnahmen. So lautet beispielsweise die ccTLD des Vereinigten Königreichs „uk“ (.co.uk) und der ISO 3166-1-Code „gb“ (technisch für die Rechtspersönlichkeit „The United Kingdom of Great Britain and Northern Ireland“). Der Parameter kann sich gemäß geltendem Recht auf Ergebnisse auswirken.
Wenn Sie den Parameter für den Regionscode festlegen möchten, rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetRegionCode()
auf.Strikte Filterung
Wird mit dem Parameter „Einschließen“-Typ verwendet. Wenn
true
festgelegt ist, werden nur Orte zurückgegeben, die den angegebenen Typen entsprechen, die durch den Typ „Einschließen“ angegeben wurden. Wenn der Standardwertfalse
ist, kann die Antwort Orte enthalten, die nicht den angegebenen Typen entsprechen.Um den strikten Typfilterungsparameter festzulegen, rufen Sie beim Erstellen des
SearchByTextRequest
-Objekts die MethodesetStrictTypeFiltering()
auf.