Anda dapat menggunakan Places SDK for iOS untuk meminta foto tempat agar ditampilkan di aplikasi Anda. Foto yang dkembalikan oleh layanan foto berasal dari berbagai sumber, termasuk pemilik bisnis dan foto dari pengguna. Untuk mengambil foto suatu tempat, Anda harus melakukan langkah-langkah berikut:
- Panggil
[GMSPlacesClient fetchPlaceFromPlaceId]
, dengan meneruskan string yang berisi ID tempat dan callback. Tindakan ini akan memanggil callback dengan objekGMSPlacePhotoMetadataList
. - Pada objek
GMSPlacePhotoMetadataList
, akses propertiresults
dan pilih foto yang akan dimuat dari array. - Untuk setiap
GMSPlacePhotoMetadata
yang akan dimuat dari daftar ini, panggil[GMSPlacesClient loadPlacePhoto:callback:]
atau[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
. Ini akan memanggil callback dengan UIImage yang bisa dipakai. Foto dapat memiliki lebar atau tinggi maksimum 1600 piksel.
Kode contoh
Metode contoh berikut mengambil ID tempat dan mendapatkan foto pertama dalam daftar yang dikembalikan. Anda dapat menggunakan metode ini sebagai template untuk metode yang akan Anda buat di aplikasi Anda sendiri.
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; } }]; } }];
Menyimpan ke cache
Foto yang dimuat menggunakan [GMSPlacesClient loadPlacePhoto:callback:]
atau [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
di-cache dalam disk dan dalam memori oleh Sistem pemuatan URL dasar
di NSURLCache
bersama.
Untuk mengonfigurasi perilaku caching, Anda dapat mengubah cache URL bersama menggunakan
[NSURLCache setSharedURLCache:]
dalam metode application:didFinishLaunchingWithOptions:
delegasi aplikasi Anda.
Jika tidak ingin aplikasi membagikan NSURLCache
dengan
Places SDK for iOS, Anda dapat membuat NSURLCache
baru dan menggunakannya
secara eksklusif dalam aplikasi tanpa menyetelnya sebagai cache bersama.
Atribusi
Umumnya, foto tempat dapat digunakan tanpa atribusi, atau mengharuskan
atribusi yang diperlukan disertakan sebagai bagian dari gambar. Namun, jika instance
GMSPlacePhotoMetadata
yang ditampilkan menyertakan atribusi, Anda harus menyertakan atribusi tambahan
dalam aplikasi Anda di mana pun Anda menampilkan gambar. Perhatikan bahwa link di
atribusi harus dapat diketuk. Lihat dokumentasi tentang atribusi.
Batas penggunaan
Pengambilan gambar menghabiskan satu unit kuota; tidak ada batas penggunaan untuk pengambilan metadata foto. Baca penggunaan dan penagihan lebih lanjut.