Place Photos

Plattform auswählen: Android iOS JavaScript Webdienst

Mit dem Places SDK for iOS können Sie die Darstellung von Fotos von Orten anfordern. Ihre Anwendung. Vom Fotodienst zurückgegebene Fotos stammen aus verschiedenen Quellen, einschließlich Geschäftsinhabern und Fotos, die von Nutzern beigesteuert wurden. Abrufen Fotos für einen Ort hinzufügen möchten, müssen Sie die folgenden Schritte ausführen:

  1. Rufen Sie uns unter [GMSPlacesClient fetchPlaceFromPlaceId] an. Übergeben Sie einen String mit einer Orts-ID und einem Callback. Dadurch wird die Callback-Funktion aufgerufen, mit GMSPlacePhotoMetadataList -Objekt enthält.
  2. Am GMSPlacePhotoMetadataList Objektzugriff auf results und wählen Sie die zu ladenden Fotos aus dem Array aus.
  3. Pro GMSPlacePhotoMetadata zum Laden aus diesem Listenaufruf [GMSPlacesClient loadPlacePhoto:callback:] oder [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]. Damit wird der Callback mit einem verwendbaren UIImage aufgerufen. Fotos dürfen maximal Höhe oder Breite von 1600 Pixel beträgt.

Beispielcode

Mit der folgenden Beispielmethode wird das erste Foto im Liste zurückgegeben. 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 von [GMSPlacesClient loadPlacePhoto:callback:] geladen oder [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] werden vom Foundation URL-Ladesystem sowohl auf dem Laufwerk als auch im Arbeitsspeicher im Cache gespeichert. in der geteilten NSURLCache.

Um das Caching-Verhalten zu konfigurieren, können Sie den gemeinsamen URL-Cache mit folgendem Befehl ändern: [NSURLCache setSharedURLCache:] in der application:didFinishLaunchingWithOptions: des Anwendungsdelegierten .

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

Attribution

In den meisten Fällen können Ortsfotos ohne Namensnennung verwendet werden oder sind die erforderliche Quellenangabe im Bild enthalten. Wenn die zurückgegebene GMSPlacePhotoMetadata Instanz eine Zuordnung enthält, müssen Sie die zusätzliche Zuordnung einschließen überall dort, wo das Bild zu sehen ist. Beachten Sie, dass die Links in den muss antippbar sein. Weitere Informationen finden Sie in der Dokumentation zu Quellenangaben.

Nutzungslimits

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