Vous pouvez utiliser le SDK Places pour iOS afin de demander des photos de lieu à afficher dans votre application. Les photos renvoyées par le service Photos proviennent de sources, y compris les propriétaires d'établissement et les photos fournies par les utilisateurs. Pour récupérer photos d'un lieu, procédez comme suit:
- Appelez
[GMSPlacesClient fetchPlaceFromPlaceId]
, en transmettant une chaîne avec un ID de lieu et un rappel. Cette opération appelle le rappel avec unGMSPlacePhotoMetadataList
. - Sur le
GMSPlacePhotoMetadataList
accéder à l'objetresults
et sélectionnez les photos à charger depuis le tableau. - Pour chaque
GMSPlacePhotoMetadata
à charger depuis cet appel de liste[GMSPlacesClient loadPlacePhoto:callback:]
ou[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
. Le rappel peut ainsi être appelé avec une UIImage utilisable. Un maximum de photos est autorisé. avec une largeur ou une hauteur de 1 600 pixels.
Exemple de code
L'exemple de méthode suivant utilise un identifiant de lieu et obtient la première photo du a renvoyé la liste. Vous pouvez utiliser cette méthode comme modèle pour la méthode que créer dans votre propre application.
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; } }]; } }];
Mise en cache
Photos chargées avec [GMSPlacesClient loadPlacePhoto:callback:]
ou [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
sont mis en cache à la fois sur le disque et en mémoire par le système de chargement de l'URL de base
dans le NSURLCache
partagé.
Pour configurer le comportement de mise en cache, vous pouvez modifier le cache des URL partagées à l'aide de
[NSURLCache setSharedURLCache:]
dans le application:didFinishLaunchingWithOptions:
du délégué de votre application
.
Si vous ne souhaitez pas que votre application partage un NSURLCache
avec
SDK Places pour iOS, vous pouvez créer un NSURLCache
et l'utiliser
exclusivement dans votre application,
sans la définir comme cache partagé.
Attributions
Dans la plupart des cas, les photos de lieu peuvent être utilisées sans attribution, ou porteront le logo
attribution obligatoire incluse dans l'image. Toutefois, si la valeur
GMSPlacePhotoMetadata
inclut une attribution, vous devez inclure l'attribution supplémentaire
quel que soit l'endroit où vous affichez l'image dans votre application. Notez que les liens
l'attribution doit être tactile. Consultez la documentation sur les attributions.
Limites d'utilisation
La récupération d'une image coûte une unité de quota. aucune limite d'utilisation la récupération des métadonnées de photo. En savoir plus sur utilisation et facturation.