Bei einer Textsuche werden Informationen über eine Gruppe von Orten auf Grundlage eines Strings zurückgegeben. Beispiel: „Pizza in München“, „Schuhgeschäfte in der Nähe von Hamburg“ oder „Hauptstraße 123“. Der Dienst gibt eine Liste mit Orten zurück, die dem Textstring und ggf. der festgelegten Standortgewichtung entsprechen.
Der Dienst ist besonders nützlich, um mehrdeutige Adressabfragen in einem automatisierten System durchzuführen. Nicht-Adresskomponenten des Strings können sowohl mit Unternehmen als auch mit Adressen übereinstimmen. Beispiele für mehrdeutige Adressabfragen sind schlecht formatierte Adressen oder Anfragen, die nicht zu Adressen gehörende Komponenten wie Unternehmensnamen enthalten. Bei Anfragen wie den ersten beiden Beispielen werden möglicherweise keine Ergebnisse zurückgegeben, es sei denn, ein Standort (z. B. eine Region, eine Standortbeschränkung oder eine Standortvorgabe) ist festgelegt.
„10 High Street, UK“ oder „123 Main Street, USA“ | Mehrere „High Streets“ im Vereinigten Königreich; mehrere „Main Streets“ in den USA. Die Abfrage gibt nur dann die gewünschten Ergebnisse zurück, wenn eine Standortbeschränkung festgelegt ist. |
„Kettenrestaurant New York“ | Mehrere Standorte einer „Restaurantkette“ in New York; keine Hausnummer oder gar kein Straßenname. |
„10 High Street, Escher, Vereinigtes Königreich“ oder „123 Main Street, Pleasanton, USA“ | Es gibt nur eine „High Street“ in der britischen Stadt Escher und nur eine „Main Street“ in der US-amerikanischen Stadt Pleasanton, Kalifornien. |
„UniqueRestaurantName New York“ | Es gibt nur eine Einrichtung mit diesem Namen in New York. Zur Unterscheidung ist keine Adresse erforderlich. |
„Pizzerie in New York“ | Diese Suchanfrage enthält eine Standortbeschränkung und „Pizzeria“ ist ein klar definierter Ortstyp. Es werden mehrere Ergebnisse zurückgegeben. |
„+1 514-670-8700“ | Diese Abfrage enthält eine Telefonnummer. Es werden mehrere Ergebnisse für Orte zurückgegeben, die mit dieser Telefonnummer verknüpft sind. |
Liste mit Orten per Textsuche abrufen
Rufen Sie GMSPlacesClient searchByTextWithRequest:
auf, um eine Textsuche anzufordern, und übergeben Sie ein GMSPlaceSearchByTextRequest
-Objekt, das die Anfrageparameter definiert, sowie eine Callback-Methode vom Typ GMSPlaceSearchByTextResultCallback
, um die Antwort zu verarbeiten.
Im GMSPlaceSearchByTextRequest
-Objekt werden alle erforderlichen und optionalen Parameter für die Anfrage angegeben. Zu den erforderlichen Parametern gehören:
- Die Liste der Felder, die im
GMSPlace
-Objekt zurückgegeben werden sollen, auch Feldmaske genannt, wie vonGMSPlaceProperty
definiert. Wenn Sie in der Feldliste nicht mindestens ein Feld angeben oder die Feldliste weglassen, gibt der Aufruf einen Fehler zurück. - Die Textabfrage.
In dieser Beispielanfrage für die Textsuche wird angegeben, dass die GMSPlace
-Objekte in der Antwort den Ortsnamen und die Orts-ID für jedes GMSPlace
-Objekt in den Suchergebnissen enthalten sollen. Außerdem wird die Antwort so gefiltert, dass nur Orte vom Typ „Restaurant“ zurückgegeben werden.
Swift
// Create the GMSPlaceSearchByTextRequest object. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue} let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0) // Array to hold the places in the response var placeResults: [GMSPlace] = [] let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchByText(with: request, callback: callback)
Objective-C
// Create the GMSPlaceSearchByTextRequest object. GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]]; request.isOpenNow = YES; request.includedType = @"restaurant"; request.maxResultCount = 5; request.minRating = 3.5; request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance; request.isStrictTypeFiltering = YES; request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ]; request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0); // Array to hold the places in the response _placeResults = [NSArray array]; // Create the GMSPlaceSearchByTextRequest object. [_placesClient searchByTextWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable placeResults, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { if (placeResults.count > 0) { // Get list of places. _placeResults = placeResults; } } } ];
Places Swift SDK for iOS (Vorabversion)
let restriction = RectangularLocationRestriction( northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30), southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50) ) let searchByTextRequest = SearchByTextRequest( textQuery: "pizza in New York", placeProperties: [ .name, .placeID ], locationRestriction: restriction, includedType: .restaurant, maxResultCount: 5, minRating: 3.5, priceLevels: [ .moderate, .inexpensive ], isStrictTypeFiltering: true ) switch await placesClient.searchByText(with: searchByTextRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Antworten der Textsuche
Die Text Search API gibt ein Array von Übereinstimmungen in Form von GMSPlace
-Objekten zurück, wobei jedes GMSPlace
-Objekt einem übereinstimmenden Ort entspricht.
Status „Offen“ abrufen
Das Objekt GMSPlacesClient
enthält eine Mitgliedsfunktion namens isOpenWithRequest
(isOpenRequest
in Swift und isPlaceOpenRequest
in GooglePlacesSwift), die eine Antwort zurückgibt, die angibt, ob der Ort basierend auf der im Aufruf angegebenen Uhrzeit derzeit geöffnet ist.
Diese Methode akzeptiert ein einzelnes Argument vom Typ GMSPlaceIsOpenWithRequest
, das Folgendes enthält:
- Ein
GMSPlace
-Objekt oder ein String, der eine Orts-ID angibt. Weitere Informationen zum Erstellen des Ortsobjekts mit den erforderlichen Feldern finden Sie unter Place Details.
- Ein optionales
NSDate
-Objekt (Obj-C) oderDate
-Objekt (Swift), das die Zeit angibt, die geprüft werden soll. Wenn keine Zeit angegeben ist, wird standardmäßig die aktuelle Zeit verwendet. - Eine
GMSPlaceOpenStatusResponseCallback
-Methode zum Verarbeiten der Antwort. >
Für die GMSPlaceIsOpenWithRequest
-Methode müssen die folgenden Felder im GMSPlace
-Objekt festgelegt sein:
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
Wenn diese Felder nicht im Ortsobjekt enthalten sind oder Sie eine Orts-ID übergeben, werden sie mithilfe von GMSPlacesClient GMSFetchPlaceRequest:
abgerufen.
isOpenWithRequest
Antwort
isOpenWithRequest
gibt ein GMSPlaceIsOpenResponse
-Objekt mit einem booleschen Wert namens status
zurück, der angibt, ob das Unternehmen geöffnet oder geschlossen ist oder der Status unbekannt ist.
Sprache | Wert bei geöffnet | Wert bei geschlossenem Fenster | Wert, wenn Status unbekannt |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (Vorabversion) | true |
false |
nil |
Abrechnung für isOpenWithRequest
- Die Felder
GMSPlacePropertyUTCOffsetMinutes
undGMSPlacePropertyBusinessStatus
werden unter der SKU „Basic Data“ in Rechnung gestellt. Die restlichen Öffnungszeiten werden über die SKU Place Details (Advanced) abgerechnet. - Wenn Ihr
GMSPlace
-Objekt bereits diese Felder aus einer früheren Anfrage enthält, werden Ihnen keine zusätzlichen Kosten in Rechnung gestellt.
Beispiel: GMSPlaceIsOpenWithRequest
-Anfrage stellen
Im folgenden Beispiel wird gezeigt, wie eine GMSPlaceIsOpenWithRequest
in einem vorhandenen GMSPlace
-Objekt initialisiert wird.
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
GooglePlacesSwift
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
Erforderliche Parameter
Verwenden Sie das GMSPlaceSearchByTextRequest
-Objekt, um die erforderlichen Parameter für die Suche anzugeben.
-
Feldliste
Geben Sie an, welche Ortsdateneigenschaften zurückgegeben werden sollen. Übergeben Sie eine Liste von
GMSPlace
-Attributen, in denen die zurückzugebenden Datenfelder angegeben sind. Wenn Sie die Feldmaske weglassen, gibt die Anfrage einen Fehler zurück.Mithilfe von Feldlisten lässt sich verhindern, dass unnötige Daten angefordert werden, was wiederum hilft, unnötige Verarbeitungszeiten und Gebühren zu vermeiden.
Geben Sie mindestens eines der folgenden Felder an:
Die folgenden Felder lösen die SKU Text Search (ID Only) aus:
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
Die folgenden Felder lösen die SKU Text Search (Basic) aus:
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
Die folgenden Felder lösen die SKU Text Search (Advanced) aus:
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
Die folgenden Felder lösen die SKU Text Search (Preferred) aus:
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
-
textQuery
Der Textstring, nach dem gesucht werden soll, z. B. „Restaurant“, „Hauptstraße 60“ oder „beste Sehenswürdigkeiten in San Francisco“.
Optionale Parameter
Verwenden Sie das GMSPlaceSearchByTextRequest
-Objekt, um die optionalen Parameter für die Suche anzugeben.
includedType
Damit werden die Ergebnisse auf Orte beschränkt, die dem in Tabelle A angegebenen Typ entsprechen. Es kann nur ein Typ angegeben werden. Beispiel:
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
Bei
true
werden nur Orte zurückgegeben, die zum Zeitpunkt des Sendens der Anfrage geöffnet haben. Wennfalse
, werden alle Unternehmen unabhängig vom Öffnungsstatus zurückgegeben. Wenn Sie diesen Parameter auffalse
festlegen, werden auch Orte zurückgegeben, für die in der Google Places-Datenbank keine Öffnungszeiten hinterlegt sind.isStrictTypeFiltering
Wird mit dem Parameter
includeType
verwendet. Wenn „true
“ festgelegt ist, werden nur Orte zurückgegeben, die den mit „includeType
“ angegebenen Typen entsprechen. Wenn „false“ (Standard) festgelegt ist, kann die Antwort Orte enthalten, die nicht den angegebenen Typen entsprechen.locationBias
Gibt einen Bereich für die Suche an. Dieser Ort dient als Gewichtung. Das bedeutet, dass Ergebnisse in der Nähe des angegebenen Orts zurückgegeben werden können, einschließlich Ergebnissen außerhalb des angegebenen Bereichs.
Sie können
locationRestriction
oderlocationBias
angeben, aber nicht beide. MitlocationRestriction
wird die Region angegeben, in der sich die Ergebnisse befinden müssen, und mitlocationBias
die Region, in deren Nähe sich die Ergebnisse befinden müssen, aber auch außerhalb liegen können.Geben Sie die Region als rechteckigen Darstellungsbereich 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 Standardradius ist 0,0. Beispiel:
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
Ein Rechteck ist ein Breiten- und Längengrad-Viewport, der durch zwei diagonal gegenüberliegende Tief- und Hochpunkte dargestellt wird. Der Tiefpunkt markiert die Südwestecke des Rechtecks und der Hochpunkt die Nordostecke.
Ein Darstellungsbereich gilt als geschlossene Region, d. h., er schließt seine Grenze ein. Die Breitengradgrenzen müssen zwischen -90 und 90 Grad liegen und die Längengradgrenzen zwischen -180 und 180 Grad:
- Wenn
low
=high
ist, besteht der Darstellungsbereich aus diesem einzelnen Punkt. - Wenn
low.longitude
>high.longitude
ist, ist der Längengradbereich umgekehrt (der Darstellungsbereich schneidet den Längengrad 180). - 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.
- Wenn
locationRestriction
Gibt einen Bereich für die Suche an. Ergebnisse außerhalb des angegebenen Bereichs werden nicht zurückgegeben. Geben Sie die Region als rechteckigen Darstellungsbereich an. Informationen zum Definieren des Darstellungsbereichs finden Sie in der Beschreibung von
locationBias
.Sie können
locationRestriction
oderlocationBias
angeben, aber nicht beide. MitlocationRestriction
wird die Region angegeben, in der sich die Ergebnisse befinden müssen, und mitlocationBias
die Region, in deren Nähe sich die Ergebnisse befinden müssen, aber auch außerhalb liegen können.-
maxResultCount
Gibt die maximale Anzahl der zu retournierenden Ortsergebnisse an. Muss zwischen 1 und 20 (Standard) liegen.
minRating
Die Ergebnisse werden auf diejenigen beschränkt, deren durchschnittliche Nutzerbewertung diesem Limit entspricht oder darüber liegt. Die Werte müssen zwischen 0,0 und 5,0 liegen (jeweils einschließlich) und in Schritten von 0,5 erfolgen. Beispiel: 0, 0,5, 1,0, …, 5,0 Die Werte werden auf die nächste halbe Einheit aufgerundet. Bei einem Wert von 0,6 werden beispielsweise alle Ergebnisse mit einer Bewertung unter 1,0 entfernt.
-
priceLevels
Sie können die Suche auf Orte beschränken, die mit bestimmten Preisniveaus gekennzeichnet sind. Standardmäßig sind alle Preisstufen ausgewählt.
Geben Sie ein Array mit einem oder mehreren Werten an, die durch
PriceLevel
definiert sind.Beispiel:
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
Gibt an, wie die Ergebnisse in der Antwort basierend auf dem Abfragetyp sortiert werden:
- Bei einer kategorischen Suchanfrage wie „Restaurants in New York“ ist
.relevance
(Ergebnisse nach Suchrelevanz sortieren) standardmäßig ausgewählt. Sie könnenrankPreference
auf.relevance
oder.distance
festlegen, um die Ergebnisse nach Entfernung zu sortieren. - Bei nicht kategorischen Suchanfragen wie „Mountain View, CA“ sollten Sie
rankPreference
leer lassen.
- Bei einer kategorischen Suchanfrage wie „Restaurants in New York“ ist
regionCode
Der Regionscode, der zum Formatieren der Antwort verwendet wird. Er wird als zweistelliger CLDR-Code angegeben. Dieser Parameter kann auch die Suchergebnisse beeinflussen. Es gibt keinen Standardwert.
Wenn der Name des Landes im Adressfeld in der Antwort mit dem Regionscode übereinstimmt, wird der Ländercode aus der Adresse entfernt.
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), der ISO 3166-1-Code dagegen „gb“ (technisch für die Entität „Vereinigtes Königreich von Großbritannien und Nordirland“). Der Parameter kann sich auf die Ergebnisse auswirken, die gemäß anwendbarem Recht angezeigt werden.
Zuordnungen in der App anzeigen
Wenn in Ihrer App Informationen angezeigt werden, die über GMSPlacesClient
abgerufen wurden, z. B. Fotos und Rezensionen, müssen auch die erforderlichen Quellenangaben eingeblendet werden.
Die Eigenschaft reviews
des GMSPlacesClient
-Objekts enthält beispielsweise ein Array mit bis zu fünf GMSPlaceReview
-Objekten. Jedes GMSPlaceReview
-Objekt kann Quellenangaben und Autorenangaben enthalten.
Wenn Sie die Rezension in Ihrer App anzeigen, müssen Sie auch alle Quellen- oder Autorenangaben anzeigen.
Weitere Informationen finden Sie in der Dokumentation zu Attributionen.