Sie können das Places SDK for iOS verwenden, um Ortsfotos für die Anzeige in Ihrer App anzufordern. Vom Fotodienst zurückgegebene Fotos stammen aus unterschiedlichen Quellen, unter anderem von Geschäftsinhabern und von Nutzern bereitgestellte Fotos. So rufen Sie Fotos für einen Ort ab:
- Rufen Sie
[GMSPlacesClient fetchPlaceFromPlaceId]
auf und übergeben Sie einen String mit einer Orts-ID und einem Callback. Dadurch wird der Callback mit einemGMSPlacePhotoMetadataList
-Objekt aufgerufen. - Rufen Sie im Objekt
GMSPlacePhotoMetadataList
die Propertyresults
auf und wählen Sie die zu ladenden Fotos aus dem Array aus. - Rufen Sie 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
Im folgenden Beispiel wird eine Orts-ID verwendet und das erste Foto in der zurückgegebenen Liste abgerufen. 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
Fotos, die mit [GMSPlacesClient loadPlacePhoto:callback:]
oder [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
geladen werden, werden sowohl vom Ladevorgang der Fundament-URL im freigegebenen NSURLCache
auf der Festplatte als auch im Arbeitsspeicher 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 App eine NSURLCache
mit dem Places SDK for iOS teilt, können Sie eine neue NSURLCache
erstellen und diese ausschließlich in Ihrer App verwenden, ohne sie als gemeinsamen Cache festzulegen.
Attribution
In den meisten Fällen können Ortsfotos ohne Zuordnung verwendet werden oder die erforderliche Zuordnung ist im Bild enthalten. Wenn die zurückgegebene GMSPlacePhotoMetadata
-Instanz jedoch eine Attribution enthält, müssen Sie die zusätzliche Attribution überall dort in Ihrer Anwendung einfügen, wo das Bild angezeigt wird. Links in der Attribution müssen antippbar sein. Weitere Informationen finden Sie in der Dokumentation zu Attributionen.
Nutzungslimits
Das Abrufen eines Bildes kostet eine Kontingenteinheit. Es gibt keine Nutzungsbeschränkungen für das Abrufen von Fotometadaten. Weitere Informationen finden Sie unter Nutzung und Abrechnung.