Place Photos

Mit dem Places SDK for iOS können Sie Ortsfotos anfordern, die in Ihrer Anwendung 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 einen Callback. Dadurch wird der Callback mit einem GMSPlacePhotoMetadataList-Objekt aufgerufen.
  2. Greifen Sie über das GMSPlacePhotoMetadataList-Objekt auf die results-Eigenschaft zu und wählen Sie die Fotos aus, die aus dem Array geladen werden sollen.
  3. Rufen Sie für jedes GMSPlacePhotoMetadata, das 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

Die folgende Beispielmethode verwendet eine Orts-ID und ruft das erste Foto in der zurückgegebenen Liste ab. 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 mit [GMSPlacesClient loadPlacePhoto:callback:] oder [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] geladen werden, werden sowohl auf der Festplatte als auch im Arbeitsspeicher vom Foundation URL-Ladesystem im freigegebenen NSURLCache zwischengespeichert.

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

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

Attribution

In den meisten Fällen dürfen diese Fotos 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 die zusätzliche Quellenangabe immer dann in Ihre Anwendung einbinden, wenn das Bild zu sehen ist. Hinweis: Links in der Quellenangabe müssen anklickbar sein. Weitere Informationen finden Sie in der Dokumentation zu Quellenangaben.

Nutzungslimits

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