Você pode usar o SDK do Places para iOS para solicitar a exibição de fotos de lugares seu aplicativo. As fotos retornadas pelo serviço de fotos vêm de vários incluindo proprietários de empresas e fotos enviadas por usuários. Para recuperar fotos de um lugar, siga estas etapas:
- Chame
[GMSPlacesClient fetchPlaceFromPlaceId]
, passando uma string com um ID de local e um retorno de chamada. Isso vai chamar o callback com umGMSPlacePhotoMetadataList
objeto. - Na
GMSPlacePhotoMetadataList
acesse o objetoresults
e selecione as fotos a serem carregadas da matriz. - Para cada
GMSPlacePhotoMetadata
para 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 até largura ou altura de 1.600 pixels.
Código de amostra
O exemplo de método a seguir usa um ID de local e obtém a primeira foto no uma lista retornada. Você pode usar esse método como modelo para o método que criar no seu próprio 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
Fotos carregadas usando [GMSPlacesClient loadPlacePhoto:callback:]
ou [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
são armazenados em cache no disco e na memória pelo sistema de carregamento de URL Foundation
nos NSURLCache
compartilhados.
Para configurar o comportamento do armazenamento em cache, altere o cache do URL compartilhado usando:
[NSURLCache setSharedURLCache:]
no application:didFinishLaunchingWithOptions:
do delegado do aplicativo
.
Se você não quiser que o aplicativo compartilhe um NSURLCache
com o
SDK do Places para iOS, você pode criar um novo NSURLCache
e usá-lo
exclusivamente dentro do app, sem defini-lo como cache compartilhado.
Atribuições
Na maioria dos casos, as fotos de lugares podem ser usadas sem atribuição ou
atribuição necessária incluída na imagem. No entanto, se o
GMSPlacePhotoMetadata
instância incluir uma atribuição, será necessário incluir a atribuição adicional
no aplicativo onde quer que a imagem seja exibida. Os links na
a atribuição precisa ser tocável. Consulte a documentação sobre atribuições.
Limites de uso
Recuperar uma imagem custa uma unidade de cota. não há limites de uso para recuperando metadados de fotos. Leia mais sobre uso e faturamento.