Das Places SDK für iOS bietet Ihrer App umfangreiche Informationen zu Orten, darunter der Name und die Adresse des Orts, der geografische Standort als Breiten-/Längengradkoordinaten und der Ortstyp (z. B. Nachtclub, Tierhandlung, Museum). Um auf diese Informationen für einen bestimmten Ort zuzugreifen, können Sie die Orts-ID verwenden. Das ist eine stabile Kennung, die einen Ort eindeutig identifiziert.
Ortsdetails
Die Klasse GMSPlace
enthält Informationen zu einem bestimmten Ort. Sie haben folgende Möglichkeiten, ein GMSPlace
-Objekt zu erhalten:
- Rufen Sie
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
an. Weitere Informationen finden Sie in der Anleitung zum Abrufen des aktuellen Orts. - Rufen Sie
GMSPlacesClient fetchPlaceFromPlaceID:
auf und übergeben Sie eineGMSPlaceField
, eine Orts-ID und eine Callback-Methode. Wenn Sie in einer „Place Details“-Anfrage nicht mindestens ein Feld angeben oder in einer Anfrage den Parameterfields
weglassen, werden alle möglichen Felder zurückgegeben und Ihnen entsprechend in Rechnung gestellt. Weitere Informationen finden Sie in der Anleitung zum Abrufen eines Orts anhand seiner ID.
Wenn Sie einen Ort anfordern, müssen Sie angeben, welche Arten von Ortsdaten zurückgegeben werden sollen. Dazu übergeben Sie einen GMSPlaceField
, in dem die zurückzugebenden Datentypen angegeben sind. Das ist ein wichtiger Faktor, da sich dies auf die Kosten für jede Anfrage auswirkt.
Da Ergebnisse für „Place Details“-Anfragen nicht leer sein dürfen, werden nur Ergebnisse mit Daten zurückgegeben. Wenn für den angeforderten Ort beispielsweise keine Fotos vorhanden sind, ist das Feld photos
nicht im Ergebnis enthalten.
Im folgenden Beispiel wird eine Liste mit zwei Feldwerten übergeben, um die von einer Anfrage zurückgegebenen Daten anzugeben:
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
Sehen Sie sich weitere Informationen zu Feldern mit Ortsdaten an. Weitere Informationen zur Abrechnung von Anfragen für Ortsdaten finden Sie unter Nutzung und Abrechnung.
Die Klasse GMSPlace
kann die folgenden Ortsdaten enthalten:
name
: Der Name des Orts.editorialSummary
– Bietet eine Beschreibung eines Orts.placeID
: Die Textkennzeichnung für den Ort. Weitere Informationen zu Orts-IDs finden Sie im Rest dieser Seite.coordinate
: Der geografische Standort des Orts, angegeben als Breiten- und Längengradkoordinaten.phoneNumber
: Telefonnummer des Ortes im internationalen Format.formattedAddress
: Die visuell lesbare Adresse dieses Ortes.Diese Adresse stimmt häufig mit der Postanschrift überein. In einigen Ländern, z. B. dem Vereinigten Königreich, ist die Weitergabe echter Postanschriften aufgrund von Lizenzeinschränkungen nicht zulässig.
Die formatierte Adresse besteht aus einer oder mehreren Adresskomponenten. Die Adresse „111 8th Avenue, New York, NY“ besteht z. B. aus den folgenden Komponenten: „111“ (Hausnummer), „8th Avenue“ (Straße), „New York“ (Stadt) und „NY“ (US-Bundesstaat).
Wir raten davon ab, die formatierte Adresse programmatisch zu parsen. Verwenden Sie stattdessen die einzelnen Adresskomponenten, die zusätzlich zur formatierten Adresse in der API-Antwort enthalten sind.
openingHours
: Die Öffnungszeiten des Orts (dargestellt durchGMSOpeningHours
). Rufen SieGMSOpeningHours.weekdayText
auf, um eine Liste mit lokalisierten Strings der täglichen Öffnungszeiten für die Woche zu erhalten. Rufen SieGMSOpeningHours.Periods
auf, um eine Liste vonGMSPeriod
s mit ausführlicheren Informationen zurückzugeben, die den vonweekdayText
bereitgestellten Daten entsprechen. Hinweis:Wenn ein Ort durchgehend geöffnet ist, wird der Zeitraum als Sonntag um Mitternacht dargestellt undcloseEvent
ist null.currentOpeningHours
undsecondaryOpeningHours
: Felder, in denen Feiertage und vorübergehende Änderungen des Zeitplans für einen Ort berücksichtigt werden.addressComponents
: Ein Array vonGMSAddressComponent
-Objekten, die Komponenten der Adresse eines Orts darstellen. Diese Komponenten dienen dazu, strukturierte Informationen über die Adresse eines Orts zu extrahieren, z. B. die Stadt, in der sich ein Ort befindet. Verwenden Sie diese Komponenten nicht für die Adressformatierung. Verwenden Sie stattdessen die EigenschaftformattedAddress
, die eine lokal formatierte Adresse liefert.Beachten Sie die folgenden Fakten zum
addressComponents
-Array:- Das Array der Adresskomponenten kann mehr Komponenten als das
formattedAddress
enthalten. - Das Array enthält nicht unbedingt alle politischen Einheiten, die eine Adresse enthalten, mit Ausnahme derjenigen, die in der
formattedAddress
enthalten sind. - Es kann nicht garantiert werden, dass das Antwortformat zwischen mehreren Anfragen gleich bleibt. Insbesondere hängt die Anzahl der
addressComponents
von der angeforderten Adresse ab und kann sich im Laufe der Zeit für dieselbe Adresse ändern. Die Position einer Komponente im Array ändert sich unter Umständen. Auch der Typ der Komponente kann sich ändern. In einer späteren Anfrage fehlt evtl. auch eine bestimmte Komponente.
- Das Array der Adresskomponenten kann mehr Komponenten als das
userRatingsTotal
– Gibt an, aus wie vielen Rezensionen die Bewertung des Orts besteht.
Die Klasse GMSPlace
enthält die folgenden Mitgliedsfunktionen:
- Mit
isOpen
wird anhand vonopeningHours
undUTCOffsetMinutes
sowie dem aktuellen Datum und der aktuellen Uhrzeit berechnet, ob ein Ort zur angegebenen Zeit geöffnet ist. isOpenAtDate
berechnet, ob ein Ort an einem bestimmten Datum geöffnet ist, basierend aufopeningHours
undUTCOffsetMinutes
sowie dem aktuellen Datum und der aktuellen Uhrzeit.
Wenn Sie diese Funktionen verwenden, um Öffnungszeiten und/oder -daten abzurufen, müssen in der ursprünglichen fetchPlaceFromPlaceID:
- oder findPlaceLikelihoodsFromUserLocationWithPlaceFields:
-Anfrage SOWOHL das Feld GMSPlaceFieldOpeningHours
als auch das Feld GMSPlaceFieldUTCOffsetMinutes
angegeben sein. Wenn eines dieser Felder fehlt, enthält das resultierende GMSPlace
-Objekt keine Öffnungszeiten oder -daten und der Aufruf gibt GMSPlaceOpenStatusUnknown
zurück. Um genaue Ergebnisse zu erhalten, fordern Sie in Ihrer ursprünglichen Ortsanfrage die Felder GMSPlaceFieldBusinessStatus
und GMSPlaceFieldUTCOffsetMinutes
an. Wenn dies nicht beantragt wird, wird davon ausgegangen, dass das Unternehmen in Betrieb ist.
isOpen
mit Place Details nutzen.
Öffnungszeiten für Feiertage abrufen
Die regulären Öffnungszeiten werden überopeningHours
abgerufen. currentOpeningHours
und secondaryOpeningHours
unterstützen Feiertags- und vorübergehende Zeitplanänderungen.
Außergewöhnliche Öffnungszeiten für diese besonderen Tage können gefiltert und angezeigt werden, sofern verfügbar.
Swift
func examineOpeningHours(place: GMSPlace) { // Check if the current opening hours contains a special day that has exceptional hours guard let currentOpeningHours = place.currentOpeningHours else { return } if let specialDays = currentOpeningHours.specialDays { guard !specialDays.isEmpty else { return } if let specialDay = specialDays.filter { $0.isExceptional }.first { // Indicate exceptional hours } } // Check if current opening hours contains a truncated time period let periods = currentOpeningHours.periods if !periods.isEmpty { for period in periods { let open = period.open let close = period.close if let open = open { let date = open.date if open.isTruncated { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available let secondaryOpeningHours = place.secondaryOpeningHours guard let hoursType = secondaryOpeningHours.first?.hoursType else { return } if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Objective-C
- (void)examineOpeningHours:(GMSPlace *) place { // Check if the current opening hours contains a special day that has exceptional hours GMSOpeningHours *currentOpeningHours = place.currentOpeningHours; if (currentOpeningHours != nil) { NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays; if ([specialDays count] != 0) { for (GMSPlaceSpecialDay *specialDay in specialDays) { NSDate *date = specialDay.date; if ([specialDay isExceptional]) { // Indicate exceptional hours } } } } // Check if current opening hours contains a truncated time period NSArray <GMSPeriod *> * periods = currentOpeningHours.periods; if ([periods count] != 0) { for (GMSPeriod * period in periods) { GMSTimeOfWeek *open = period.open; GMSTimeOfWeek *close = period.close; if (open) { if ([open isTruncated]) { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours; GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType; if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Ort nach ID anfordern
Die Orts-ID ist eine Kennung in Textform, die einen Ort eindeutig definiert. Im Places SDK for iOS können Sie die ID eines Orts aus einem GMSPlace
-Objekt abrufen. Sie können die Orts-ID speichern und sie später verwenden, um das GMSPlace
-Objekt noch einmal abzurufen.
Wenn Sie einen Ort anhand seiner ID abrufen möchten, rufen Sie GMSPlacesClient
fetchPlaceFromPlaceID:
mit den folgenden Parametern auf:
- Ein String, der eine Orts-ID enthält.
- Ein oder mehrere
GMSPlaceField
, mit denen die zurückzugebenden Datentypen angegeben werden. - Ein Sitzungstoken, wenn der Aufruf zum Abschluss einer Autocomplete-Abfrage erfolgt. Andernfalls übergeben Sie „nil“.
- Ein
GMSPlaceResultCallback
zum Umgang mit dem Ergebnis.
Die API ruft die angegebene Callback-Methode auf und übergibt ein GMSPlace
-Objekt. Wird der Ort nicht gefunden, hat das Objekt „place“ den Wert null.
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
Zuordnungen in der App anzeigen
Wenn in Ihrer App Informationen angezeigt werden, die von GMSPlacesClient
lookUpPlaceID:callback:
abgerufen wurden, müssen auch Quellenangaben eingeblendet werden.
Weitere Informationen finden Sie in der Dokumentation zu Attributionen.
Weitere Informationen zu Orts-IDs
Die Orts-ID, die im Places SDK for iOS verwendet wird, ist dieselbe Kennung wie in der Places API, im Places SDK for Android und in anderen Google APIs.
Eine Orts-ID kann nur auf einen Ort verweisen. Ein Ort kann aber mehrere Orts-IDs haben.
Es gibt Umstände, die dazu führen können, dass ein Ort eine neue Orts-ID erhält. Zum Beispiel kann dies der Fall sein, wenn ein Unternehmen seinen Sitz verlagert.
Wenn Sie einen Ort anfordern, indem Sie eine Orts-ID angeben, können Sie sicher sein, dass Sie in der Antwort immer denselben Ort erhalten (sofern der Ort noch existiert). Beachten Sie jedoch, dass die Antwort eine Orts-ID enthalten kann, die sich von der in Ihrer Anfrage unterscheidet.
Weitere Informationen finden Sie in der Übersicht zur Orts-ID.