Bei einer Nearby Search (New)-Anfrage wird als Eingabe die zu durchsuchende Region angegeben, die als Kreis definiert ist. Dieser Kreis wird durch die Breiten- und Längengradkoordinaten des Mittelpunkts und den Radius in Metern definiert. Die Anfrage gibt eine Liste der übereinstimmenden Orte zurück, die jeweils durch ein GMSPlace
-Objekt im angegebenen Suchgebiet dargestellt werden.
Standardmäßig enthält die Antwort Orte aller Typen im Suchgebiet. Optional können Sie die Antwort filtern, indem Sie eine Liste von Ortstypen angeben, die explizit in die Antwort ein- oder aus ihr ausgeschlossen werden sollen. Sie können beispielsweise angeben, dass nur Orte vom Typ „Restaurant“, „Bäckerei“ und „Café“ in die Antwort aufgenommen werden sollen, oder alle Orte vom Typ „Schule“ ausschließen.
Nearby Search (New)-Anfragen
Rufen Sie GMSPlacesClient searchNearbyWithRequest:
auf, um eine Nearby Search-Anfrage zu stellen, und übergeben Sie ein GMSPlaceSearchNearbyRequest
-Objekt, das die Anfrageparameter definiert, sowie eine Callback-Methode vom Typ GMSPlaceSearchNearbyResultCallback
, um die Antwort zu verarbeiten.
Im GMSPlaceSearchNearbyRequest
-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 Standortbeschränkung, also der Kreis, der das Suchgebiet definiert.
In dieser Beispielanfrage für die Nearby Search wird angegeben, dass die Antwort-GMSPlace
-Objekte den Ortsnamen (GMSPlacePropertyName
) und die Ortskoordinaten (GMSPlacePropertyCoordinate
) für jedes GMSPlace
-Objekt in den Suchergebnissen enthalten sollen. Außerdem werden nur Orte vom Typ „Restaurant“ und „Café“ zurückgegeben.
// Array to hold the places in the response var placeResults: [GMSPlace] = [] // Define the search area as a 500 meter diameter circle in San Francisco, CA. let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500) // Specify the fields to return in the GMSPlace object for each place in the response. let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue} // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties) let includedTypes = ["restaurant", "cafe"] request.includedTypes = includedTypes let callback: GMSPlaceSearchNearbyResultCallback = { [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().searchNearby(with: request, callback: callback)
// Array to hold the places in the response _placeResults = [NSArray array]; // Define the search area as a 500 meter diameter circle in San Francisco, CA. id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500); // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc] initWithLocationRestriction:circularLocation placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]]; // Set the place types to filter on. NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ]; request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes]; [_placesClient searchNearbyWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { // Get list of places. _placeResults = places; } } ];
let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500) let searchNearbyRequest = SearchNearbyRequest( locationRestriction: restriction, placeProperties: [ .name, .coordinate], includedTypes: [ .restaurant, .cafe ], ) switch await placesClient.searchNearby(with: searchNearbyRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Nearby Search-Antworten
Die Nearby Search API gibt ein Array von Übereinstimmungen in Form vonGMSPlace
-Objekten zurück, wobei ein GMSPlace
-Objekt pro übereinstimmendem Ort vorhanden ist.
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 nimmt ein einzelnes Argument vom Typ GMSPlaceIsOpenWithRequest
an, 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 angegeben 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 ob der Status unbekannt ist.
Sprache | Wert bei geöffnet | Wert bei geschlossenem Status | 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 Place Details Enterprise-SKU 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.
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 } }
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 } }];
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 GMSPlaceSearchNearbyRequest
-Objekt, um die erforderlichen Parameter für die Suche anzugeben.
-
Feldliste
Wenn Sie Details zu einem Ort anfordern, müssen Sie die zurückzugebenden Daten im
GMSPlace
-Objekt für den Ort als Feldmaske angeben. Um die Feldmaske zu definieren, übergeben Sie ein Array von Werten vonGMSPlaceProperty
an dasGMSPlaceSearchNearbyRequest
-Objekt. Mit der Feldmaskierung 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 „Nearby Search Pro“ aus:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyName
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyPhotos
GMSPlacePropertyPlaceID
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntrance
Die folgenden Felder lösen die Nearby Search Enterprise-SKU aus:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
Die folgenden Felder lösen die SKU „Nearby Search Enterprise Plus“ aus:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
Im folgenden Beispiel wird eine Liste mit zwei Feldwerten übergeben, um anzugeben, dass das
GMSPlace
-Objekt, das von einer Anfrage zurückgegeben wird, die Feldername
undplaceID
enthält:// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
-
locationRestriction
Ein
GMSPlaceLocationRestriction
-Objekt, das den zu durchsuchenden Bereich als Kreis definiert, der durch den Mittelpunkt und den Radius in Metern festgelegt wird. Der Radius muss zwischen 0,0 und 50.000,0 liegen. Der Standardradius ist 0,0. Sie müssen in Ihrer Anfrage einen Wert größer als 0,0 festlegen.
Optionale Parameter
Verwenden Sie das GMSPlaceSearchNearbyRequest
-Objekt, um die optionalen Parameter für die Suche anzugeben.
-
includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes
Hier können Sie eine Liste von Typen aus den Typen in Tabelle A angeben, mit der die Suchergebnisse gefiltert werden. In jeder Kategorie für Einschränkungen für Typen können bis zu 50 Typen angegeben werden.
Ein Ort kann nur einen einen primären Typ aus den Typen haben, die ihm in Tabelle A zugeordnet sind. Der primäre Typ kann beispielsweise
"mexican_restaurant"
oder"steak_house"
sein. MitincludedPrimaryTypes
undexcludedPrimaryTypes
können Sie die Ergebnisse nach dem primären Typ eines Orts filtern.Ein Ort kann auch mehrere Typenwerte aus den Typen haben, die ihm in Tabelle A zugeordnet sind. Ein Restaurant kann beispielsweise die folgenden Typen haben:
"seafood_restaurant"
,"restaurant"
,"food"
,"point_of_interest"
,"establishment"
. MitincludedTypes
undexcludedTypes
können Sie die Ergebnisse in der Liste der mit einem Ort verknüpften Typen filtern.Wenn Sie einen allgemeinen primären Typ angeben, z. B.
"restaurant"
oder"hotel"
, kann die Antwort Orte mit einem spezifischeren primären Typ als dem angegebenen enthalten. Sie geben beispielsweise an, dass ein primärer Typ von"restaurant"
enthalten sein soll. Die Antwort kann dann Orte mit dem primären Typ"restaurant"
enthalten, aber auch Orte mit einem spezifischeren primären Typ wie"chinese_restaurant"
oder"seafood_restaurant"
.Wenn für eine Suche mehrere Einschränkungen des Typs angegeben sind, werden nur Orte zurückgegeben, die alle Einschränkungen erfüllen. Wenn Sie beispielsweise
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
angeben, bieten die zurückgegebenen Orte"restaurant"
-bezogene Dienstleistungen an, sind aber nicht in erster Linie als"steak_house"
tätig.includedTypes
Eine Liste der Ortstypen aus Tabelle A, nach denen gesucht werden soll. Wenn dieser Parameter weggelassen wird, werden Orte aller Typen zurückgegeben.
excludedTypes
Eine Liste der Ortstypen aus Tabelle A, die von einer Suche ausgeschlossen werden sollen.
Wenn Sie in der Anfrage sowohl den
includedTypes
(z. B."school"
) als auch denexcludedTypes
(z. B."primary_school"
) angeben, enthält die Antwort Orte, die als"school"
, aber nicht als"primary_school"
kategorisiert sind. Die Antwort enthält Orte, die mindestens einem derincludedTypes
entsprechen und keinem derexcludedTypes
.Wenn es Konflikte zwischen Typen gibt, z. B. wenn ein Typ sowohl in
includedTypes
als auch inexcludedTypes
vorkommt, wird einINVALID_REQUEST
-Fehler zurückgegeben.includedPrimaryTypes
Eine Liste der primären Ortstypen aus Tabelle A, die in eine Suche einbezogen werden sollen.
excludedPrimaryTypes
Eine Liste der primären Ortstypen aus Tabelle A, die von einer Suche ausgeschlossen werden sollen.
Wenn es Konflikte bei primären Typen gibt, z. B. wenn ein Typ sowohl in
includedPrimaryTypes
als auch inexcludedPrimaryTypes
vorkommt, wird einINVALID_ARGUMENT
-Fehler zurückgegeben. -
maxResultCount
Gibt die maximale Anzahl der zu retournierenden Ortsergebnisse an. Muss zwischen 1 und 20 (Standard) liegen.
-
rankPreference
Die Art des Rankings, die verwendet werden soll. Wenn dieser Parameter weggelassen wird, werden die Ergebnisse nach Beliebtheit sortiert. Kann einer der folgenden Werte sein:
.popularity
(Standardeinstellung): Die Ergebnisse werden nach ihrer Beliebtheit sortiert..distance
: Die Ergebnisse werden in aufsteigender Reihenfolge nach ihrer Entfernung vom angegebenen Standort sortiert.
-
regionCode
Der Regionscode, der zum Formatieren der Antwort verwendet wird, angegeben als zweistelliger CLDR-Code. Es gibt keinen Standardwert.
Wenn der Ländername des Felds
formattedAddress
in der Antwort mit demregionCode
übereinstimmt, wird der Ländercode ausformattedAddress
weggelassen. Dieser Parameter hat keine Auswirkungen aufadrFormatAddress
, in dem der Ländername immer enthalten ist, und aufshortFormattedAddress
, in dem er nie enthalten ist.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.