Place Photos

Plattform auswählen: Android iOS JavaScript Webdienst

Mit dem Places SDK for iOS können Sie Ortsfotos anfordern, die in Ihrer App angezeigt werden sollen. Vom Fotodienst zurückgegebene Fotos stammen aus verschiedenen Quellen, z. B. von Geschäftsinhabern und von Nutzern zur Verfügung gestellten Fotos. 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 Callback. Dadurch wird der Callback mit einem GMSPlacePhotoMetadataList-Objekt aufgerufen.
  2. Greifen Sie für das Objekt GMSPlacePhotoMetadataList auf das Attribut results 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 eine maximale Breite oder Höhe von 1.600 Pixeln haben.

Beispielcode

Mit der folgenden Beispielmethode wird eine Orts-ID verwendet, mit der das erste Foto aus der zurückgegebenen Liste abgerufen wird. Sie können diese Methode als Vorlage für die Methode verwenden, die Sie in Ihrer eigenen Anwendung 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

Mit [GMSPlacesClient loadPlacePhoto:callback:] oder [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] geladene Fotos werden vom Foundation-URL-Ladesystem sowohl auf dem Laufwerk als auch im Arbeitsspeicher im freigegebenen NSURLCache zwischengespeichert.

Zum Konfigurieren des Caching-Verhaltens können Sie den gemeinsamen URL-Cache mit [NSURLCache setSharedURLCache:] in der Methode application:didFinishLaunchingWithOptions: des Anwendungsdelegats ändern.

Wenn Sie nicht möchten, dass Ihre Anwendung ein NSURLCache mit dem Places SDK for iOS teilt, können Sie ein neues NSURLCache erstellen und dieses exklusiv in Ihrer App verwenden, ohne es als gemeinsamen Cache festzulegen.

Attribution

In den meisten Fällen können Ortsfotos ohne Quellenangabe verwendet werden bzw. sind die erforderlichen Quellenangaben bereits im Bild enthalten. Wenn die zurückgegebene GMSPlacePhotoMetadata-Instanz jedoch eine Quellenangabe enthält, müssen Sie diese in die Anwendung einbinden. Links in der Quellenangabe müssen antippbar sein. Weitere Informationen finden Sie in der Dokumentation zu Quellenangaben.

Nutzungslimits

Das Abrufen eines Bildes kostet eine Kontingenteinheit. Es gibt keine Nutzungslimits für das Abrufen von Fotometadaten. Weitere Informationen finden Sie unter Nutzung und Abrechnung.