Photos du lieu

Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.
Sélectionnez une plate-forme : Android iOS JavaScript Service Web

Vous pouvez utiliser le SDK Places pour iOS pour demander des photos de lieux à afficher dans votre application. Les photos renvoyées par le service Photos proviennent de différentes sources, y compris des propriétaires d'établissement et des photos fournies par les utilisateurs. Pour récupérer les photos d'un lieu, procédez comme suit:

  1. Appelez [GMSPlacesClient fetchPlaceFromPlaceId] en transmettant une chaîne avec un ID de lieu et un rappel. Cela permet d'appeler le rappel avec un objet GMSPlacePhotoMetadataList.
  2. Dans l'objet GMSPlacePhotoMetadataList, accédez à la propriété results et sélectionnez les photos à charger à partir du tableau.
  3. Pour que chaque GMSPlacePhotoMetadata se charge à partir de cette liste, appelez [GMSPlacesClient loadPlacePhoto:callback:] ou [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]. Le rappel peut ainsi être appelé avec une UIImage utilisable. La largeur et la hauteur des photos ne doivent pas dépasser 1 600 pixels.

Exemple de code

L'exemple de méthode suivant prend un ID de lieu et obtient la première photo de la liste renvoyée. Vous pouvez utiliser cette méthode comme modèle pour la méthode que vous allez 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

Les photos chargées à l'aide de [GMSPlacesClient loadPlacePhoto:callback:] ou de [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] sont mises en cache sur disque et en mémoire par le système de chargement d'URL de base dans le NSURLCache partagé.

Pour configurer le comportement de mise en cache, vous pouvez modifier le cache d'URL partagée à l'aide de [NSURLCache setSharedURLCache:] dans la méthode application:didFinishLaunchingWithOptions: du délégué de votre application.

Si vous ne souhaitez pas que votre application partage une NSURLCache avec le SDK Places pour iOS, vous pouvez créer une NSURLCache et l'utiliser exclusivement dans votre application, sans la définir en tant que cache partagé.

Attributions

Dans la plupart des cas, les photos de lieux peuvent être utilisées sans mention d'attribution ou inclure l'attribution requise dans l'image. Toutefois, si l'instance GMSPlacePhotoMetadata renvoyée inclut une attribution, vous devez l'inclure dans l'application partout où vous affichez l'image. Notez que les liens de l'attribution doivent être cliquables. Consultez la documentation sur les attributions.

Limites d'utilisation

La récupération d'une image coûte une unité de quota. Il n'y a aucune limite d'utilisation pour récupérer les métadonnées des photos. En savoir plus sur l'utilisation et la facturation