Uygulamanızda gösterilecek yer fotoğrafları istemek için iOS için Yerler SDK'sını (Yeni) kullanabilirsiniz. Fotoğraflar hizmeti tarafından döndürülen fotoğraflar; işletme sahipleri ve kullanıcılar tarafından eklenen fotoğraflar da dahil olmak üzere çeşitli kaynaklardan gelir.
Fotoğraflar, UIImage nesnesi tarafından temsil edilen bitmap resimlerdir. Bit eşlemeli resimlerin maksimum boyutu 4.800x4.800 pikseldir.
Resim isteğinde bulunma
Bir yer için en fazla 10 fotoğraf isteyebilirsiniz:
Bir yer kimliği ve
GMSPlacePhotoMetadataResultCallback
geri çağırma işlevi göndererek[GMSPlacesClient lookUpPhotosForPlaceID]
işlevini çağırın. Bu istek,GMSPlacePhotoMetadataResultCallback
geri arama işlevini birGMSPlacePhotoMetadataList
nesnesi ile çağırır.Geri çağırmadaki
GMSPlacePhotoMetadataList
nesnesinde,results
dizisinin mülkü fotoğrafları içerir. Her fotoğraf, birGMSPlacePhotoMetadata
nesnesi ile temsil edilir.İstenen resmin maksimum boyutunu da içeren bir
GMSFetchPhotoRequest
oluşturmak içinGMSPlacePhotoMetadata
nesnesini kullanın.Dizideki her
GMSPlacePhotoMetadata
nesnesi içinGMSFetchPhotoRequest
nesnesini geçirerek[GMSPlacesClient fetchPhotoWithRequest:callback:]
işlevini çağırın. Bu yöntem,GMSFetchPhotoResultCallback
geri çağırma işlevini UIImage olarak kullanılabilir bir bitmap resmiyle çağırır.
Bir yer için fotoğraf istemenin bir başka yolu da alan listesine GMSPlacePropertyPhotos
ekleyerek Yer Ayrıntıları (Yeni) isteği göndermektir. Yer Ayrıntıları çağrısı yapmanın avantajı, yanıt GMSPlace
nesnesinin yer için istediğiniz fotoğrafları ve diğer tüm veri alanlarını içerebilmesidir.
Örnek kod
Aşağıdaki örnek yöntem, bir yer kimliği alır ve döndürülen listedeki ilk fotoğrafı alır. Bu yöntemi, kendi uygulamanızda oluşturacağınız yöntem için şablon olarak kullanabilirsiniz.
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 } }]; }];
iOS için Yerler Swift SDK'sı (Önizleme)
// 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 }
Önbelleğe alma
[GMSPlacesClient loadPlacePhoto:callback:]
veya [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
kullanılarak yüklenen fotoğraflar, paylaşılan NSURLCache
'teki Foundation URL yükleme sistemi tarafından hem diskte hem de bellekte önbelleğe alınır.
Önbelleğe alma davranışını yapılandırmak için uygulama temsilcinizin application:didFinishLaunchingWithOptions:
yönteminde [NSURLCache setSharedURLCache:]
kullanarak paylaşılan URL önbelleğini değiştirebilirsiniz.
Uygulamanızın iOS için Places SDK'sıyla NSURLCache
paylaşmasını istemiyorsanız yeni bir NSURLCache
oluşturabilir ve bunu paylaşılan önbellek olarak ayarlamaksızın yalnızca uygulamanızda kullanabilirsiniz.
İlişkilendirmeler
Yer fotoğrafları çoğu durumda ilişkilendirme olmadan kullanılabilir veya gerekli ilişkilendirme, resmin bir parçası olarak eklenir. Ancak döndürülen GMSPlacePhotoMetadata
örneğinde attributions
veya authorAttribution
varsa bu ilişkilendirmeleri, resmi görüntülediğiniz her yerde uygulamanıza eklemeniz gerekir. İlişkilendirmeler ile ilgili dokümanları inceleyin.