Place Photos

Plattform auswählen: Android iOS JavaScript Webdienst

Mit dem Places SDK for iOS können Sie Fotos von Orten anfordern, die in Ihrer App angezeigt werden sollen. Die vom Fotodienst bereitgestellten Fotos stammen aus unterschiedlichen Quellen, z. B. von Geschäftsinhabern oder Nutzern. So rufen Sie Fotos für einen Ort ab:

  1. Rufen Sie [GMSPlacesClient fetchPlaceFromPlaceId] auf und übergeben Sie einen String mit einer Orts-ID und einem Rückruf. Dadurch wird der Rückruf mit einem GMSPlacePhotoMetadataList-Objekt aufgerufen.
  2. Rufe auf dem Objekt GMSPlacePhotoMetadataList die Eigenschaft results auf und wähle die Fotos aus, die aus dem Array geladen werden sollen.
  3. Rufe für jeden GMSPlacePhotoMetadata, der aus dieser Liste geladen werden soll, [GMSPlacesClient loadPlacePhoto:callback:] oder [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] auf. Damit wird der Callback mit einem verwendbaren UIImage aufgerufen. Fotos dürfen maximal 1.600 Pixel breit oder hoch sein.

Beispielcode

In der folgenden Beispielmethode wird eine Orts-ID übergeben, um das erste Foto in der zurückgegebenen Liste abzurufen. Sie können diese Methode als Vorlage für die Methode verwenden, die Sie in Ihrer eigenen App erstellen.

Swift

// Specify the place data types to return (in this case, just photos).
let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.photos.rawValue))!

placesClient?.fetchPlace(fromPlaceID: "INSERT_PLACE_ID_HERE",
                         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 {
    // Get the metadata for the first photo in the place photo metadata list.
    let photoMetadata: GMSPlacePhotoMetadata = place.photos![0]

    // Call loadPlacePhoto to display the bitmap and attribution.
    self.placesClient?.loadPlacePhoto(photoMetadata, callback: { (photo, error) -> Void in
      if let error = error {
        // TODO: Handle the error.
        print("Error loading photo metadata: \(error.localizedDescription)")
        return
      } else {
        // Display the first image and its attributions.
        self.imageView?.image = photo;
        self.lblText?.attributedText = photoMetadata.attributions;
      }
    })
  }
})

Objective-C

// Specify the place data types to return (in this case, just photos).
GMSPlaceField fields = (GMSPlaceFieldPhotos);

NSString *placeId = @"INSERT_PLACE_ID_HERE";

[_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) {
    GMSPlacePhotoMetadata *photoMetadata = [place photos][0];
    [self->_placesClient loadPlacePhoto:photoMetadata callback:^(UIImage * _Nullable photo, NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error loading photo metadata: %@", [error localizedDescription]);
        return;
      } else {
        // Display the first image and its attributions.
        self->imageView.image = photo;
        self->lblText.attributedText = photoMetadata.attributions;
      }
    }];
  }
}];

Caching

Fotos, die über [GMSPlacesClient loadPlacePhoto:callback:] oder [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] geladen werden, werden vom Foundation-URL-Ladesystem im freigegebenen NSURLCache sowohl auf dem Laufwerk als auch im Arbeitsspeicher im Cache gespeichert.

Wenn Sie das Caching-Verhalten konfigurieren möchten, können Sie den freigegebenen URL-Cache mit [NSURLCache setSharedURLCache:] in der application:didFinishLaunchingWithOptions:-Methode Ihres Anwendungsdelegats ändern.

Wenn Ihre Anwendung keinen NSURLCache mit dem Places SDK for iOS teilen soll, können Sie einen neuen NSURLCache erstellen und ausschließlich in Ihrer App verwenden, ohne ihn als freigegebenen Cache festzulegen.

Attribution

In den meisten Fällen dürfen Fotos von Orten ohne Quellenangabe verwendet werden bzw. sind die erforderlichen Zuordnungen bereits im Bild eingebunden. Wenn die zurückgegebene GMSPlacePhotoMetadata-Instanz jedoch eine Quellenangabe enthält, müssen Sie diese zusätzliche Quellenangabe immer dann in Ihre Anwendung einbinden, wenn das Bild zu sehen ist. Links in der Attribution müssen anklickbar sein. Weitere Informationen finden Sie in der Dokumentation zu Attributionen.

Nutzungslimits

Das Abrufen eines Bildes kostet eine Kontingenteinheit. Für das Abrufen von Fotometadaten gibt es keine Nutzungsbeschränkungen. Weitere Informationen zu Nutzung und Abrechnung