Uygulamanızda görüntülenecek yer fotoğrafları isteğinde bulunmak için iOS için Yerler SDK'sını kullanabilirsiniz. Fotoğraf hizmeti tarafından döndürülen fotoğraflar, işletme sahipleri ve kullanıcıların katkıda bulunduğu fotoğraflar gibi çeşitli kaynaklardan gelir. Bir yerin fotoğraflarını almak için aşağıdaki adımları uygulamalısınız:
- Yer kimliği ve geri çağırma içeren bir dize ileterek
[GMSPlacesClient fetchPlaceFromPlaceId]
yöntemini çağırın. Bu işlem, geri çağırmayı birGMSPlacePhotoMetadataList
nesnesiyle çağırır. GMSPlacePhotoMetadataList
nesnesinderesults
özelliğine erişin ve diziden yüklenecek fotoğrafları seçin.- Bu listeden yüklenecek her bir
GMSPlacePhotoMetadata
işlemi için[GMSPlacesClient loadPlacePhoto:callback:]
veya[GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
yöntemini çağırın. Bunlar, geri çağırmayı kullanılabilir bir UIImage ile çağırır. Fotoğrafların maksimum 1.600 piksel genişliğinde veya yüksekliğinde olabilir.
Ö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
// 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; } }]; } }];
Önbelleğe alma
[GMSPlacesClient loadPlacePhoto:callback:]
veya [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]
kullanılarak yüklenen fotoğraflar, paylaşılan NSURLCache
içindeki Temel 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 Yerler SDK'sı ile bir NSURLCache
paylaşmasını istemiyorsanız yeni bir NSURLCache
oluşturabilir ve bunu paylaşılan önbellek olarak ayarlamadan yalnızca uygulamanızda kullanabilirsiniz.
İlişkilendirmeler
Çoğu durumda, yer fotoğrafları atıfta bulunulmadan kullanılabilir veya gerekli atıf resmin parçası olarak dahil edilir. Ancak döndürülen GMSPlacePhotoMetadata
örneği bir ilişkilendirme içeriyorsa görüntüyü gösterdiğiniz yerde ek ilişkilendirmeyi uygulamanıza eklemeniz gerekir. Atıftaki bağlantıların
dokunulabilir olması gerektiğini unutmayın. Atıflar ile ilgili dokümanlara bakın.
Kullanım sınırları
Görüntü almanın maliyeti bir birimdir. Fotoğraf meta verilerini almak için herhangi bir kullanım sınırı yoktur. Kullanım ve faturalandırma hakkında daha fazla bilgi edinin.