Das Places SDK for iOS bietet Ihrer App umfassende Informationen zu Orten, z. B. Name und Adresse, den geografischen Standort, der als Breiten- und Längengrad angegeben wird, den Typ des Orts (z. B. Nachtclub, Tierhandlung, Museum usw.). Um auf diese Informationen für einen bestimmten Ort zuzugreifen, können Sie die Orts-ID verwenden. Das ist eine stabile Kennung, mit der ein Ort eindeutig identifiziert wird.
Ortsdetails
Die Klasse GMSPlace
bietet Informationen zu einem bestimmten Ort. Sie haben folgende Möglichkeiten, ein GMSPlace
-Objekt abzurufen:
- Rufen Sie
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
auf. Weitere Informationen finden Sie in der Anleitung zum Abrufen des aktuellen Orts. - Rufen Sie
GMSPlacesClient fetchPlaceFromPlaceID:
auf und übergeben SieGMSPlaceField
, eine Orts-ID und eine Callback-Methode. Wenn Sie in „Place Details“-Anfragen nicht mindestens ein Feld mit einer Anfrage angeben oder denfields
-Parameter in einer Anfrage weglassen, werden alle möglichen Felder zurückgegeben und Ihnen entsprechend in Rechnung gestellt. Weitere Informationen finden Sie in der Anleitung zum Abrufen eines Ortes nach ID.
Wenn Sie einen Ort anfordern, müssen Sie angeben, welche Arten von Ortsdaten zurückgegeben werden sollen. Dazu übergeben Sie ein GMSPlaceField
und geben die Datentypen an, die zurückgegeben werden sollen. Dies ist ein wichtiger Faktor, da sich dies auf die Kosten für jede Anfrage auswirkt.
Die Ergebnisse für „Place“-Daten dürfen nicht leer sein. Es werden aber nur Ortsergebnisse mit Daten zurückgegeben. Wenn ein angeforderter Ort z. B. keine Fotos hat, 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 OrteseditorialSummary
: Gibt eine einfache Beschreibung eines Orts an.placeID
: die ID des Textes für den Ort Weitere Informationen zu Orts-IDs finden Sie im weiteren Verlauf dieser Seite.coordinate
: der geografische Standort des Ortes, angegeben in Breiten- und LängengradenphoneNumber
: die Telefonnummer des Ortes im internationalen Format.formattedAddress
: die menschenlesbare Adresse dieses StandortsDiese 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 für den Ort (wie inGMSOpeningHours
dargestellt). Rufen SieGMSOpeningHours.weekdayText
auf, um eine Liste der lokalisierten Strings der täglichen Öffnungszeiten für die 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 der Zeitraum als Sonntag um Mitternacht dargestellt undcloseEvent
ist null.currentOpeningHours
undsecondaryOpeningHours
: Felder, für die an einem Feiertag vorübergehende und vorübergehende Änderungen am Fahrplan vorgenommen werden.addressComponents
: ein Array vonGMSAddressComponent
-Objekten, die Komponenten der Adresse eines Ortes darstellen. Die Komponenten dienen dazu, strukturierte Daten zur Adresse eines Ortes zu extrahieren, beispielsweise die Stadt, in der sich ein Ort befindet. Verwende diese Komponenten nicht für die Adressformatierung. Verwende stattdessen die PropertyformattedAddress
, die eine lokalisierte formatierte Adresse bietet.Hinweise zum Array
addressComponents
:- Das Array der Adresskomponenten kann mehr Komponenten als nur
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 Antwortformat zwischen mehreren 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 evtl. auch eine bestimmte Komponente.
- Das Array der Adresskomponenten kann mehr Komponenten als nur
userRatingsTotal
: Gibt an, wie viele Rezensionen die Bewertung des Orts bilden.
Die Klasse GMSPlace
enthält die folgenden Mitgliederfunktionen:
-
isOpen
berechnet anhand der Daten vonopeningHours
undUTCOffsetMinutes
sowie dem aktuellen Datum und der Uhrzeit, ob ein Ort zu der angegebenen Zeit geöffnet ist. isOpenAtDate
berechnet, ob ein Ort an einem bestimmten Datum geöffnet ist. Grundlage hierfür sindopeningHours
undUTCOffsetMinutes
sowie das aktuelle Datum und die aktuelle Uhrzeit.
Wenn Sie diese Funktionen zum Abrufen von Öffnungszeiten und/oder Datumsangaben verwenden, muss in der ursprünglichen Anfrage fetchPlaceFromPlaceID:
oder findPlaceLikelihoodsFromUserLocationWithPlaceFields:
sowohl das Feld GMSPlaceFieldOpeningHours
als auch das Feld GMSPlaceFieldUTCOffsetMinutes
angegeben werden. Wenn eines dieser Felder fehlt, enthält das resultierende GMSPlace
-Objekt keine Öffnungszeiten oder Datumsangaben und der Aufruf gibt GMSPlaceOpenStatusUnknown
zurück. Damit Sie genaue Ergebnisse erhalten, fordern Sie in der ursprünglichen Ortsanfrage die Felder GMSPlaceFieldBusinessStatus
und GMSPlaceFieldUTCOffsetMinutes
an. Wenn hier keine Angaben gemacht werden, wird angenommen, dass das Unternehmen betriebsbereit ist.
isOpen
mit Place Details verwenden.
Spezielle Öffnungszeiten
Während die regulären Öffnungszeiten bisopeningHours
abgerufen werden, unterstützen currentOpeningHours
und secondaryOpeningHours
Feiertags- und vorübergehende Fahrplanänderungen.
Außergewöhnliche Öffnungszeiten an diesen Tagen können gefiltert und nach Möglichkeit angezeigt werden.
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 später verwenden, um das Objekt GMSPlace
noch einmal abzurufen.
Um einen Ort nach ID abzurufen, rufen Sie GMSPlacesClient
fetchPlaceFromPlaceID:
auf und übergeben Sie die folgenden Parameter:
- Ein String mit einer Orts-ID.
- Eine oder mehrere
GMSPlaceField
s mit den anzugebenden Datentypen. - Ein Sitzungstoken, wenn der Aufruf erfolgt, um eine Abfrage zur automatischen Vervollständigung zu beenden. Andernfalls übergeben Sie „nil“.
- Ein
GMSPlaceResultCallback
zum Verarbeiten 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 in Ihrer App Informationen aus GMSPlacesClient
lookUpPlaceID:callback:
angezeigt werden, müssen auch Attributionen angezeigt 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 die gleiche wie in der Places API, Places SDK for Android und anderen Google APIs.
Jede Orts-ID kann nur auf einen Ort verweisen, ein einzelner Ort kann jedoch mehrere Orts-IDs haben.
Unter bestimmten Umständen kann es passieren, dass eine neue Orts-ID abgerufen wird. Zum Beispiel kann dies der Fall sein, wenn ein Unternehmen seinen Sitz verlagert.
Wenn Sie einen Ort über eine Orts-ID anfordern, können Sie sicher sein, dass Sie immer denselben Ort in der Antwort erhalten, sofern der Ort noch existiert. Die Antwort kann jedoch eine Orts-ID enthalten, die von der in Ihrer Anfrage abweicht.
Weitere Informationen finden Sie in der Übersicht zur Orts-ID.