Você pode usar o SDK do Places para iOS para solicitar fotos de lugares para exibição no seu aplicativo. As fotos retornadas pelo serviço de fotos vêm de várias fontes, incluindo proprietários de empresas e fotos enviadas pelos usuários. Para recuperar fotos de um lugar, siga estas etapas:
- Chame
[GMSPlacesClient fetchPlaceFromPlaceId]
, transmitindo uma string com um ID de lugar e um callback. Isso vai chamar o callback com um objetoGMSPlacePhotoMetadataList
. - No objeto
GMSPlacePhotoMetadataList
, acesse a propriedaderesults
e selecione as fotos a serem carregadas do array. - Para cada
GMSPlacePhotoMetadata
carregar desta lista, chame[GMSPlacesClient loadPlacePhoto:callback:]
ou[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
. Eles chamarão o retorno de chamada com uma UIImage utilizável. As fotos podem ter uma largura ou altura máxima de 1.600 pixels.
Código de amostra
O exemplo de método a seguir usa um ID de lugar e recebe a primeira foto na lista retornada. Você pode usar esse método como modelo para o método que vai criar no seu 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; } }]; } }];
Armazenamento em cache
As fotos carregadas usando [GMSPlacesClient loadPlacePhoto:callback:]
ou [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
são armazenadas em cache no disco e na memória pelo sistema de carregamento de URL do Foundation
no NSURLCache
compartilhado.
Para configurar o comportamento de armazenamento em cache, é possível mudar o cache de URL compartilhado usando
[NSURLCache setSharedURLCache:]
no método application:didFinishLaunchingWithOptions:
do delegado do aplicativo.
Se você não quiser que seu app compartilhe um NSURLCache
com o
Places SDK para iOS, crie um novo NSURLCache
e use-o
exclusivamente no app sem defini-lo como o cache compartilhado.
Atribuições
Na maioria dos casos, as fotos de lugares podem ser usadas sem atribuição ou terão a
atribuição necessária incluída como parte da imagem. No entanto, se a instância
GMSPlacePhotoMetadata
retornada incluir uma atribuição, será necessário incluir a atribuição adicional
no aplicativo sempre que você mostrar a imagem. Os links na atribuição precisam ser clicáveis. Consulte a documentação sobre atribuições.
Limites de uso
A recuperação de uma imagem custa uma unidade de cota. Não há limites de uso para recuperar metadados de fotos. Leia mais sobre uso e faturamento.