Anda dapat menggunakan Places SDK for iOS (Baru) untuk meminta foto tempat dalam aplikasi Anda. Foto yang dikembalikan oleh layanan foto berasal dari berbagai sumber, termasuk pemilik bisnis dan foto kontribusi pengguna.
Foto adalah gambar bitmap yang diwakili oleh UIImage. Gambar bitmap memiliki ukuran maksimum 4800 kali 4800 piksel.
Meminta gambar
Anda dapat meminta hingga 10 foto untuk suatu tempat:
Telepon
[GMSPlacesClient lookUpPhotosForPlaceID]
, meneruskan ID tempat dan CallbackGMSPlacePhotoMetadataResultCallback
. Permintaan ini memanggil callbackGMSPlacePhotoMetadataResultCallback
denganGMSPlacePhotoMetadataList
.Dari objek
GMSPlacePhotoMetadataList
dalam callback,results
properti array berisi foto, di mana setiap foto diwakili olehGMSPlacePhotoMetadata
.Menggunakan objek
GMSPlacePhotoMetadata
untuk membuatGMSFetchPhotoRequest
, termasuk ukuran maksimum gambar yang diminta.Untuk setiap objek
GMSPlacePhotoMetadata
dalam array, panggil[GMSPlacesClient fetchPhotoWithRequest:callback:]
meneruskan objekGMSFetchPhotoRequest
. Metode ini memanggilGMSFetchPhotoResultCallback
dengan gambar bitmap yang dapat digunakan sebagai UIImage.
Cara lain untuk meminta foto untuk suatu tempat adalah dengan membuat permintaan Place Details (New), termasuk GMSPlacePropertyPhotos
dalam daftar kolom. Keuntungan melakukan
Panggilan Place Details adalah bahwa respons
GMSPlace
dapat berisi foto dan bidang
data lainnya yang Anda inginkan untuk
mendapatkan tempat tersebut.
Kode contoh
Contoh metode berikut mengambil ID tempat dan mendapatkan foto pertama di daftar yang ditampilkan. Anda dapat menggunakan metode ini sebagai {i>template<i} untuk metode yang akan Anda buat di aplikasi Anda sendiri.
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Request list of photos for a place placesClient.lookUpPhotos(forPlaceID: placeID) { (photos, error) in guard let photoMetadata: GMSPlacePhotoMetadata = photos?.results[0] else { return } // Request individual photos in the response list let fetchPhotoRequest = GMSFetchPhotoRequest(photoMetadata: photoMetadata, maxSize: CGSizeMake(4800, 4800)) self.client.fetchPhoto(with: fetchPhotoRequest, callback: { (photoImage: UIImage?, error: Error?) in guard let photoImage, error == nil else { print("Handle photo error: ") return } print("Display photo Image: ") } ) }
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; [placesClient lookUpPhotosForPlaceID:placeID callback: ^(GMSPlacePhotoMetadataList *list, NSError *error) { GMSPlacePhotoMetadata *photoMetadata = [list results][0]; // Request individual photos in the response list GMSFetchPhotoRequest *fetchPhotoRequest = [[GMSFetchPhotoRequest alloc] initWithPhotoMetadata:photoMetadata maxSize:CGSizeMake(4800, 4800)]; [placesClient fetchPhotoWithRequest:fetchPhotoRequest callback: ^(UIImage *_Nullable photoImage, NSError *_Nullable error) { if (error == nil) { // Display photo } }]; }];
Places Swift SDK for iOS (Pratinjau)
// First fetch place details // A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [ . name, .website ] ) var fetchedPlace: Place switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): fetchedPlace = place case .failure(let placesError): // Handle error } // Use the place details to fetch a photo's image. guard let photo = fetchedPlace.photos?.first else { // Handle place without photos. } let fetchPhotoRequest = FetchPhotoRequest(photo: photo, maxSize: CGSizeMake(4800, 4800)) switch await placesClient.fetchPhoto(with: fetchPhotoRequest) { case .success(let uiImage): // Handle image. case .failure(let placesError): // Handle error }
Menyimpan ke cache
Foto dimuat menggunakan [GMSPlacesClient loadPlacePhoto:callback:]
atau [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
di-cache baik di disk maupun dalam memori oleh sistem pemuatan URL Foundation
dalam NSURLCache
yang dibagikan.
Untuk mengonfigurasi perilaku penyimpanan dalam cache, Anda dapat mengubah cache URL bersama menggunakan
[NSURLCache setSharedURLCache:]
di application:didFinishLaunchingWithOptions:
delegasi aplikasi Anda
.
Jika tidak ingin aplikasi Anda membagikan NSURLCache
dengan
Places SDK for iOS, Anda dapat membuat NSURLCache
baru dan menggunakan
hanya dalam aplikasi Anda tanpa menyetelnya sebagai cache bersama.
Atribusi
Umumnya, foto tempat dapat digunakan tanpa atribusi, atau akan memiliki
atribusi yang diperlukan yang disertakan sebagai bagian dari gambar. Namun, jika nilai
GMSPlacePhotoMetadata
mencakup semua
attributions
atau
authorAttribution
,
Anda harus menyertakan atribusi ini dalam aplikasi di mana pun Anda menampilkan
gambar. Lihat dokumentasi tentang
atribusi.