Foto del luogo

Seleziona la piattaforma: Android iOS JavaScript Servizio web

Puoi utilizzare Places SDK per iOS per richiedere le foto dei luoghi da visualizzare la tua applicazione. Le foto restituite dal servizio fotografico provengono da una serie di da altre fonti, tra cui i proprietari di attività e le foto fornite dagli utenti. Per recuperare foto di un luogo, devi procedere nel seguente modo:

  1. Chiama il numero [GMSPlacesClient fetchPlaceFromPlaceId], passando una stringa con un ID luogo e un callback. In questo modo il callback con una GMSPlacePhotoMetadataList .
  2. Sul GMSPlacePhotoMetadataList accede all'oggetto results e seleziona le foto da caricare dall'array.
  3. Per ogni GMSPlacePhotoMetadata per caricare da questa chiamata dell'elenco [GMSPlacesClient loadPlacePhoto:callback:] o [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]. che chiameranno il callback con un'immagine UI utilizzabile. Le foto possono avere un massimo di di larghezza o altezza di 1600 pixel.

Codice di esempio

Il seguente metodo di esempio utilizza un ID luogo e ottiene la prima foto nel elenco restituito. Puoi usare questo metodo come modello per il metodo che utilizzerai che puoi creare 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

Foto caricate con [GMSPlacesClient loadPlacePhoto:callback:] oppure [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] vengono memorizzati nella cache sia su disco sia in memoria dal sistema di caricamento dell'URL di base nell'elemento NSURLCache condiviso.

Per configurare il comportamento di memorizzazione nella cache, puoi modificare la cache dell'URL condiviso utilizzando [NSURLCache setSharedURLCache:] nel application:didFinishLaunchingWithOptions: del delegato della tua applicazione .

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

Attribuzioni

Nella maggior parte dei casi, le foto dei luoghi possono essere utilizzate senza attribuzione o avranno la attribuzione obbligatoria inclusa nell'immagine. Tuttavia, se l'oggetto restituito GMSPlacePhotoMetadata se un'istanza include un'attribuzione, devi includere l'attribuzione aggiuntiva nell'applicazione ovunque mostri l'immagine. Tieni presente che i link nella sezione deve essere toccabile. Consulta la documentazione sulle attribuzioni.

Limiti di utilizzo

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