Puedes usar el SDK de Places para iOS a fin de solicitar fotos de lugares en las que se mostrarán. tu aplicación. Las fotos mostradas por el servicio de fotos provienen de una variedad de fuentes, incluidos los propietarios de empresas y las fotos aportadas por los usuarios. Para recuperar fotos de un lugar, debes seguir estos pasos:
- Llamada a
[GMSPlacesClient fetchPlaceFromPlaceId]
, el paso de una cadena con un ID de lugar y una devolución de llamada; Se llamará a la devolución de llamada con unGMSPlacePhotoMetadataList
. - En la
GMSPlacePhotoMetadataList
objeto accede a laresults
y selecciona las fotos que deseas cargar del array. - Para cada
GMSPlacePhotoMetadata
para cargar desde esta lista, llama a[GMSPlacesClient loadPlacePhoto:callback:]
o[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
. Estos llamarán al callback con un UIImage utilizable. Las fotos pueden tener un máximo de 1,600 píxeles de ancho o alto.
Código de muestra
En el siguiente método de ejemplo, se toma un ID de lugar y se obtiene la primera foto de la lista devuelta. Puedes usar este método como plantilla para el método que crear en tu propia aplicación.
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; } }]; } }];
Almacenamiento en caché
Las fotos se cargaron con [GMSPlacesClient loadPlacePhoto:callback:]
.
o [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
se almacenan en caché en el disco y en la memoria a través del sistema de carga de URLs de Foundation.
en el NSURLCache
compartido.
Para configurar el comportamiento de la caché, puedes cambiar la caché de la URL compartida con
[NSURLCache setSharedURLCache:]
en el application:didFinishLaunchingWithOptions:
del delegado de la aplicación
.
Si no deseas que tu aplicación comparta un NSURLCache
con el SDK de Places para iOS, puedes crear un NSURLCache
nuevo y usarlo exclusivamente en tu app sin configurarlo como el caché compartido.
Atribuciones
En la mayoría de los casos, las fotos de lugares se pueden utilizar sin atribución, o tendrán el elemento
la atribución requerida incluida como parte de la imagen. Sin embargo, si los resultados
GMSPlacePhotoMetadata
incluye una atribución, debes incluir la atribución adicional
de tu aplicación, en cualquier lugar en el que muestres la imagen. Ten en cuenta que los vínculos
la atribución debe ser táctil. Consulta la documentación sobre las atribuciones.
Límites de uso
La recuperación de una imagen cuesta una unidad de cuota. no hay límites de uso para recuperando metadatos de fotos. Más información sobre uso y facturación.