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:
- Rufen Sie uns unter
[GMSPlacesClient fetchPlaceFromPlaceId]
an. Übergeben Sie einen String mit einer Orts-ID und einem Callback. Dadurch wird die Callback-Funktion aufgerufen, mitGMSPlacePhotoMetadataList
-Objekt enthält. - Am
GMSPlacePhotoMetadataList
Objektzugriff aufresults
und wählen Sie die zu ladenden Fotos aus dem Array aus. - 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.