Foto del luogo

Mantieni tutto organizzato con le raccolte Salva e classifica i contenuti in base alle tue preferenze.
Seleziona piattaforma: Android iOS JavaScript Servizio web

Puoi utilizzare l'SDK Places per iOS per richiedere che le foto dei luoghi vengano visualizzate nella tua applicazione. Le foto restituite dal servizio includono foto di varie fonti, tra cui i proprietari delle attività e foto fornite dagli utenti. Per recuperare le foto di un luogo, procedi nel seguente modo:

  1. Chiamare [GMSPlacesClient fetchPlaceFromPlaceId], passando una stringa con un ID luogo e un callback. Viene chiamato il callback con un oggetto GMSPlacePhotoMetadataList.
  2. Nell'oggetto GMSPlacePhotoMetadataList accedi alla proprietà results e seleziona le foto da caricare dall'array.
  3. Per caricare GMSPlacePhotoMetadata da questo elenco, chiama [GMSPlacesClient loadPlacePhoto:callback:] o [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]. che chiameranno il callback con un'immagine UI utilizzabile. Le foto possono avere una larghezza o un'altezza massima di 1600 pixel.

Codice di esempio

Il seguente metodo di esempio prende un ID luogo e riceve la prima foto nell'elenco restituito. Puoi utilizzare questo metodo come modello per il metodo che creerai nella tua app.

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;
      }
    }];
  }
}];

Memorizzazione nella cache

Le foto caricate utilizzando [GMSPlacesClient loadPlacePhoto:callback:] o [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] vengono memorizzate nella cache sia su disco sia in memoria dal sistema di caricamento degli URL di base nella risorsa NSURLCache condivisa.

Per configurare il comportamento di memorizzazione nella cache, puoi modificare la cache degli URL condivisi utilizzando [NSURLCache setSharedURLCache:] nel metodo application:didFinishLaunchingWithOptions: della delega dell'applicazione.

Se non vuoi che la tua applicazione condivida un NSURLCache con l'SDK Places per iOS, puoi creare un nuovo NSURLCache e utilizzarlo esclusivamente all'interno della tua app senza impostarlo come cache condivisa.

Attribuzioni

Nella maggior parte dei casi, le foto dei luoghi possono essere utilizzate senza attribuzione o includeranno l'attribuzione richiesta come parte dell'immagine. Tuttavia, se l'istanza GMSPlacePhotoMetadata restituita include un'attribuzione, devi includere l'attribuzione aggiuntiva nella tua applicazione ovunque mostri l'immagine. Tieni presente che i link nell'attribuzione devono essere selezionabili. Consulta la documentazione sulle attribuzione.

Limiti di utilizzo

Il recupero di un'immagine costa un'unità di quota; non ci sono limiti di utilizzo per il recupero dei metadati delle foto. Scopri di più su utilizzo e fatturazione.