„Place Details“

Das Places SDK for iOS stellt Ihrer App umfangreiche Informationen zu Orten bereit, darunter Name und Adresse des Orts, die geografische Position als Breiten-/Längengradkoordinaten, die Art des Orts (z. B. Nachtclub, Zoohandlung, Museum) und mehr. Wenn Sie auf diese Informationen für einen bestimmten Ort zugreifen möchten, können Sie die Orts-ID verwenden. Das ist eine stabile Kennung, die einen Ort eindeutig identifiziert.

Ortsdetails

Die Klasse GMSPlace liefert Informationen zu einem bestimmten Ort. Sie können ein GMSPlace-Objekt auf folgende Weise abrufen:

Wenn Sie einen Ort anfragen, müssen Sie angeben, welche Arten von Ortsdaten zurückgegeben werden sollen. Übergeben Sie dazu einen GMSPlaceField, um die zurückzugebenden Datentypen anzugeben. Dies ist ein wichtiger Aspekt, da sich dies auf die Kosten pro 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 Ort in der Anfrage z. B. 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 Ortes.
  • editorialSummary: Enthält eine Beschreibung eines Orts.
  • placeID: Die ID des Orts in Textform. Weitere Informationen zu Orts-IDs finden Sie auf dieser Seite.
  • coordinate: Der geografische Standort des Ortes, angegeben als Breiten- und Längengradkoordinaten.
  • phoneNumber: Die Telefonnummer des Ortes 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 (wie durch GMSOpeningHours dargestellt). Rufen Sie GMSOpeningHours.weekdayText auf, um eine Liste mit lokalisierten Strings der täglichen Öffnungszeiten für die Woche abzurufen. Rufen Sie GMSOpeningHours.Periods auf, um eine Liste von GMSPeriods mit detaillierteren Informationen zurückzugeben, die den von weekdayText bereitgestellten Daten entsprechen. Hinweis: Wenn ein Ort durchgängig geöffnet ist, wird der Zeitraum als Sonntag um Mitternacht dargestellt und closeEvent ist null.
  • currentOpeningHours und secondaryOpeningHours: Felder, die Feiertage und vorübergehende Änderungen am Zeitplan für einen Ort enthalten.
  • addressComponents: Ein Array von GMSAddressComponent-Objekten, die Komponenten der Adresse eines Orts darstellen. Diese Komponenten dienen dazu, strukturierte Informationen zur Adresse eines Ortes zu extrahieren, z. B. die Stadt, in der sich ein Ort befindet. Verwenden Sie diese Komponenten nicht für die Adressformatierung, sondern die Property formattedAddress, die eine lokalisierte formatierte Adresse liefert.

    Hinweise zum addressComponents-Array:

    • 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 Anfrage fehlt evtl. auch eine bestimmte Komponente.
  • userRatingsTotal: Gibt an, wie viele Rezensionen die Bewertung des Orts ausmachen.

Die Klasse GMSPlace enthält die folgenden Memberfunktionen:

  • isOpen berechnet anhand von openingHours und UTCOffsetMinutes sowie dem aktuellen Datum und der aktuellen Uhrzeit, ob ein Ort zur angegebenen Zeit geöffnet ist.
  • isOpenAtDate berechnet anhand von openingHours und UTCOffsetMinutes sowie des aktuellen Datums und der aktuellen Uhrzeit, ob ein Ort an einem bestimmten Datum geöffnet ist.
  • Wenn Sie diese Funktionen verwenden, um Öffnungszeiten und/oder -daten abzurufen, müssen in der ursprünglichen fetchPlaceFromPlaceID:- oder findPlaceLikelihoodsFromUserLocationWithPlaceFields:-Anfrage BEIDE Felder (GMSPlaceFieldOpeningHours und 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. Wenn Sie genaue Ergebnisse erhalten möchten, fordern Sie die Felder GMSPlaceFieldBusinessStatus und GMSPlaceFieldUTCOffsetMinutes in Ihrer ursprünglichen Ortsanfrage an. Wenn nicht angefordert, wird davon ausgegangen, dass das Unternehmen geöffnet ist.

    Informationen zur Verwendung von isOpen mit Place Details finden Sie im Video How to get opening hours .

Spezielle Öffnungszeiten abrufen

Während die regulären Öffnungszeiten über openingHours abgerufen werden, unterstützen currentOpeningHours und secondaryOpeningHours Feiertage und vorübergehende Änderungen des Zeitplans. Abweichende Ö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 später verwenden, um das GMSPlace-Objekt noch einmal abzurufen.

Wenn Sie einen Ort anhand der ID abrufen möchten, rufen Sie GMSPlacesClient fetchPlaceFromPlaceID: auf und übergeben Sie die folgenden Parameter:

  • Ein String, der eine Orts-ID enthält.
  • Mindestens ein GMSPlaceField, mit dem die zurückzugebenden Datentypen festgelegt werden.
  • Ein Sitzungstoken, wenn der Aufruf zum Abschließen einer Autocomplete-Anfrage erfolgt. Andernfalls übergeben Sie nil.
  • Ein GMSPlaceResultCallback, um das Ergebnis zu verarbeiten.

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.

Places Swift SDK for iOS

// Initialize Places Swift Client.
let placesClient = PlacesClient.shared

// A hotel in Saigon with an attribution
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
    
// Fetch Place Request.
let fetchPlaceRequest = FetchPlaceRequest(
  placeID: placeID,
  placeProperties: [.displayName]
)
    
Task {
  switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
  case .success(let place):
    print("The selected place is: \(place.displayName): \(String(describing: place.description))")
  case .failure(let placesError):
    print("Place not found: \(placeID); \(placesError)")
  }
}

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 über GMSPlacesClient lookUpPlaceID:callback: abgerufen wurden, müssen auch Quellenangaben eingeblendet werden. Weitere Informationen finden Sie in der Dokumentation zu Quellenangaben.

Weitere Informationen zu Orts-IDs

Die im Places SDK for iOS verwendete Orts-ID ist dieselbe Kennung, die auch in der Places API, im Places SDK for Android und in anderen Google APIs verwendet wird.

Eine Orts-ID kann nur auf einen Ort verweisen. Ein Ort kann aber mehrere Orts-IDs haben.

Unter bestimmten Umständen kann ein Ort eine neue Orts-ID erhalten. Zum Beispiel kann dies der Fall sein, wenn ein Unternehmen seinen Sitz verlagert.

Wenn Sie einen Ort anhand einer Orts-ID anfordern, können Sie sicher sein, dass Sie in der Antwort immer denselben Ort erhalten (sofern der Ort noch existiert). Die Antwort kann jedoch eine Orts-ID enthalten, die sich von der in Ihrer Anfrage unterscheidet.

Weitere Informationen finden Sie in der Übersicht zur Orts-ID.