Das Places SDK for iOS stellt Ihrer App umfangreiche Informationen zu Orten bereit, z. B. Name und Adresse des Orts, den geografischen Standort (als Breiten- und Längengrad angegeben) und die Art des Ortes (z. B. Nachtclub, Tierhandlung, Museum). Um auf diese Informationen für einen bestimmten Ort zuzugreifen, können Sie die Orts-ID verwenden, eine stabile Kennung, die einen Ort eindeutig identifiziert.
Ortsdetails
Die Klasse GMSPlace
stellt Informationen zu einem bestimmten Ort bereit. Sie können ein GMSPlace
-Objekt auf folgende Arten abrufen:
- Rufen Sie
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
auf. Weitere Informationen findest du im Leitfaden zum Aktuellen Ort abrufen. - Rufen Sie
GMSPlacesClient fetchPlaceFromPlaceID:
auf und übergeben Sie einenGMSPlaceField
, eine Orts-ID und eine Callback-Methode. Wenn Sie bei „Place Details“-Anfragen nicht mindestens ein Feld in einer Anfrage angeben oder den Parameterfields
in einer Anfrage weglassen, werden ALLE möglichen Felder zurückgegeben und Ihnen entsprechend in Rechnung gestellt. Weitere Informationen finden Sie im Leitfaden Ort nach ID abrufen.
Wenn Sie einen Ort anfordern, müssen Sie angeben, welche Arten von Ortsdaten zurückgegeben werden sollen. Übergeben Sie dazu einen GMSPlaceField
und geben Sie die zurückzugebenden Datentypen an. Dies ist ein wichtiger Aspekt, da sich dies auf die Kosten für jede Anfrage auswirkt.
Da Ergebnisse für Ortsdaten nicht leer sein dürfen, werden nur Ergebnisse mit Daten zurückgegeben. Wenn z. B. für einen angeforderten Ort 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
: Name des OrteseditorialSummary
: Bietet eine einfache Beschreibung eines Ortes.placeID
: Die ID für den Ort in Textform. Weitere Informationen zu Orts-IDs finden Sie weiter unten auf dieser Seite.coordinate
: Der geografische Standort des Ortes, angegeben in Breiten- und Längengraden.phoneNumber
: Telefonnummer des Orts im internationalen Format.formattedAddress
: Die menschenlesbare Adresse dieses Standorts.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
. RufeGMSOpeningHours.weekdayText
auf, um eine Liste lokalisierter Strings für die täglichen Öffnungszeiten der Woche zu erhalten. Rufen SieGMSOpeningHours.Periods
auf, um eine Liste vonGMSPeriod
s mit detaillierteren Informationen zurückzugeben, die den vonweekdayText
bereitgestellten Daten entsprechen. Hinweis:Wenn ein Ort immer geöffnet ist, wird als Zeitraum Sonntag um Mitternacht angegeben undcloseEvent
ist null.currentOpeningHours
undsecondaryOpeningHours
: Felder, die auf Feiertage und vorübergehende Änderungen im Zeitplan für einen Ort angewendet werden.addressComponents
: Ein Array mitGMSAddressComponent
-Objekten, die Komponenten einer Adresse für einen Ort darstellen. Diese Komponenten werden verwendet, um strukturierte Informationen zur Adresse eines Orts zu extrahieren, z. B. um die Stadt zu finden, in der sich der Ort befindet. Verwenden Sie diese Komponenten nicht für die Adressformatierung. Verwenden Sie stattdessen die EigenschaftformattedAddress
, mit der eine Adresse im lokalisierten Format bereitgestellt wird.Beachten Sie Folgendes zum
addressComponents
-Array:- Das Array der Adresskomponenten kann mehr Komponenten als
formattedAddress
enthalten. - Das Array enthält nicht unbedingt alle politischen Einheiten einer Adresse. Ausgenommen hiervon sind die im
formattedAddress
enthaltenen. - Es kann nicht garantiert werden, dass das Format der Antwort zwischen den Anfragen gleich bleibt. Insbesondere die Anzahl der
addressComponents
variiert je nach angeforderter Adresse 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 Antwort fehlt möglicherweise eine bestimmte Komponente.
- Das Array der Adresskomponenten kann mehr Komponenten als
userRatingsTotal
: Gibt an, aus wie vielen Rezensionen die Bewertung des Ortes besteht.
Die Klasse GMSPlace
enthält die folgenden Memberfunktionen:
-
isOpen
berechnet anhand vonopeningHours
undUTCOffsetMinutes
sowie dem aktuellen Datum und der aktuellen Uhrzeit, ob ein Ort zum angegebenen Zeitpunkt geöffnet ist. isOpenAtDate
berechnet anhand vonopeningHours
undUTCOffsetMinutes
sowie dem aktuellen Datum und der aktuellen Uhrzeit, ob ein Ort an einem bestimmten Datum geöffnet ist.
Wenn Sie diese Funktionen zum Abrufen von Öffnungszeiten und/oder Datumsangaben verwenden, müssen in der ursprünglichen fetchPlaceFromPlaceID:
- oder findPlaceLikelihoodsFromUserLocationWithPlaceFields:
-Anfrage sowohl die Felder GMSPlaceFieldOpeningHours
als auch GMSPlaceFieldUTCOffsetMinutes
enthalten sein. Wenn eines dieser Felder fehlt, enthält das resultierende GMSPlace
-Objekt keine Öffnungszeiten oder Datumsangaben und der Aufruf gibt GMSPlaceOpenStatusUnknown
zurück. Fordern Sie die Felder GMSPlaceFieldBusinessStatus
und GMSPlaceFieldUTCOffsetMinutes
in Ihrer ursprünglichen Ortsanfrage an, um genaue Ergebnisse zu erhalten. Wird kein Antrag gestellt, wird davon ausgegangen, dass das Unternehmen betriebsbereit ist.
isOpen
mit Place Details-Anfragen verwenden.
Außergewöhnliche Öffnungszeiten
Die regulären Öffnungszeiten sind überopeningHours
abrufbar, currentOpeningHours
und secondaryOpeningHours
unterstützen Feiertags- und vorübergehende Fahrplanänderungen.
Außergewöhnliche Öffnungszeiten für diese speziellen 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 Ortes aus einem GMSPlace
-Objekt abrufen. Sie können die Orts-ID speichern und sie verwenden, um das GMSPlace
-Objekt später noch einmal abzurufen.
Wenn Sie einen Ort nach ID abrufen möchten, rufen Sie GMSPlacesClient
fetchPlaceFromPlaceID:
auf und übergeben Sie die folgenden Parameter:
- Ein String mit einer Orts-ID.
- Ein oder mehrere
GMSPlaceField
s, die die zurückzugebenden Datentypen angeben. - Ein Sitzungstoken, wenn der Aufruf zum Abschluss einer Autocomplete-Abfrage erfolgt. Andernfalls übergeben Sie „nil“.
- Ein
GMSPlaceResultCallback
zur Verarbeitung des Ergebnisses.
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 deine App Informationen aus GMSPlacesClient
lookUpPlaceID:callback:
anzeigt, müssen auch Zuordnungen angezeigt werden.
Weitere Informationen finden Sie in der Dokumentation zu Quellenangaben.
Weitere Informationen zu Orts-IDs
Die im Places SDK for iOS verwendete Orts-ID entspricht der ID, die in der Places API, dem Places SDK for Android und anderen Google APIs verwendet wird.
Jede Orts-ID kann sich nur auf einen Ort beziehen, aber ein Ort kann mehrere Orts-IDs haben.
Unter bestimmten Umständen erhält ein Ort eine neue Orts-ID. Zum Beispiel kann dies der Fall sein, wenn ein Unternehmen seinen Sitz verlagert.
Wenn Sie einen Ort durch Angabe einer Orts-ID anfordern, können Sie sicher sein, dass in der Antwort immer derselbe Ort zurückgegeben wird, sofern er noch vorhanden ist. Die Antwort kann jedoch eine Orts-ID enthalten, die sich von der in Ihrer Anfrage unterscheidet.
Weitere Informationen finden Sie unter Orts-IDs.