Place Photos (nouveau)

Sélectionnez une plate-forme: Android iOS Service Web

Place Photos (nouvelle version) vous permet d'ajouter du contenu photographique de haute qualité à votre application. Place Photos vous permet d'accéder aux millions de photos stockées dans la base de données Places. Place Photos renvoie un URI vers une image bitmap. La taille maximale de l'image bitmap est de 4 800 x 4 800 pixels.

Envoyer des requêtes Photos

Pour récupérer une image d'un lieu:

  1. Utilisez Informations sur le lieu (nouveau) pour extraire un objet Place à l'aide de fetchPlace(). Veillez à inclure le champ Place.Field PHOTO_METADATAS dans la liste des champs à inclure dans l'objet Place de la réponse.
  2. Dans OnSuccessListener pour FetchPlaceResponse, appelez Place.getPhotoMetadas() pour obtenir l'objet de métadonnées de photo de type PhotoMetadata à partir de l'objet Place de la réponse.
  3. Créez un objet FetchResolvedPhotoUriRequest pour effectuer la requête et transmettre l'objet de métadonnées de la photo, ainsi que des valeurs pour la hauteur maximale, la largeur maximale ou les deux.
  4. Utilisez PlacesClient.fetchResolvedPhotoUri() pour demander l'URI de la photo.
  5. Ajoutez un OnSuccessListener et obtenez l'URI de la photo à partir de l'objet FetchResolvedPhotoUriResponse.

Paramètres obligatoires

Les paramètres obligatoires pour FetchResolvedPhotoUriRequest sont les suivants:

  • Métadonnées des photos

    Objet de métadonnées de la photo à renvoyer.

  • Hauteur ou largeur maximale

    Spécifie la hauteur et la largeur maximales, en pixels, de l'image à renvoyer. Si l'image est plus petite que les valeurs spécifiées, l'image d'origine est renvoyée. Si l'image est plus grande dans l'une des dimensions, elle sera redimensionnée pour correspondre à la plus petite des deux dimensions, tout en conservant son format d'origine. Les propriétés "hauteur maximale" et "largeur maximale" acceptent un entier compris entre 1 et 4 800. Vous devez spécifier la hauteur maximale, la largeur maximale ou les deux.

    • Pour définir le paramètre de hauteur maximale, appelez la méthode setMaxHeight() lors de la création de l'objet FetchResolvedPhotoUriRequest.
    • Pour définir le paramètre de largeur maximale, appelez la méthode setMaxWidth() lors de la création de l'objet FetchResolvedPhotoUriRequest.

Exemples de photos de lieux

L'exemple suivant montre comment obtenir un URI de photo d'un lieu.

// Define a Place ID.
final String placeId = "INSERT_PLACE_ID_HERE";

// Specify fields. Requests for photos must always have the PHOTO_METADATAS field.
final List<Place.Field> fields = Collections.singletonList(Place.Field.PHOTO_METADATAS);

// Get a Place object (this example uses fetchPlace(), but you can also use findCurrentPlace())
final FetchPlaceRequest placeRequest = FetchPlaceRequest.newInstance(placeId, fields);

placesClient.fetchPlace(placeRequest).addOnSuccessListener((response) -> {
    final Place place = response.getPlace();

    // Get the photo metadata.
    final List<PhotoMetadata> metadata = place.getPhotoMetadatas();
    if (metadata == null || metadata.isEmpty()) {
        Log.w(TAG, "No photo metadata.");
        return;
    }
    final PhotoMetadata photoMetadata = metadata.get(0);

    // Get the attribution text and author attributions.
    final String attributions = photoMetadata.getAttributions();
    final AuthorAttributions authorAttributions = photoMetadata.getAuthorAttributions();

    // Create a FetchResolvedPhotoUriRequest.
    final FetchResolvedPhotoUriRequest photoRequest = FetchResolvedPhotoUriRequest.builder(photoMetadata)
        .setMaxWidth(500)
        .setMaxHeight(300)
        .build();

    // Request the photo URI
    placesClient.fetchResolvedPhotoUri(photoRequest).addOnSuccessListener((fetchResolvedPhotoUriResponse) -> {
        Uri uri = fetchResolvedPhotoUriResponse.getUri();
        RequestOptions requestOptions = new RequestOptions().override(Target.SIZE_ORIGINAL);
        Glide.with(this).load(uri).apply(requestOptions).into(imageView);
    }).addOnFailureListener((exception) -> {
        if (exception instanceof ApiException) {
            final ApiException apiException = (ApiException) exception;
            Log.e(TAG, "Place not found: " + exception.getMessage());
            final int statusCode = apiException.getStatusCode();
            // TODO: Handle error with given status code.
        }
    });
});

Attributions

Dans la plupart des cas, les photos de lieux peuvent être utilisées sans attribution ou l'attribution requise est incluse dans l'image. Toutefois, l'objet de métadonnées de photo, de type PhotoMetadata, peut contenir l'un des deux types d'attributions supplémentaires suivants:

Si l'objet PhotoMetadata renvoyé inclut l'un de ces types d'attribution, vous devez inclure l'attribution dans votre application partout où vous affichez l'image. Pour en savoir plus, consultez Afficher les attributions.