Yer Fotoğrafları (Yeni)

Platform seçin: Android iOS Web Hizmeti

iOS için Yerler SDK'sını (Yeni) kullanarak yer fotoğraflarının uygulamanızda gösterilmesini isteyebilirsiniz. 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 da dahil olmak üzere çeşitli kaynaklardan gelir.

Fotoğraflar, bir UIImage nesnesiyle temsil edilen bit eşlem resimleridir. Bir bit eşlem resminin maksimum boyutu 4.800 x 4.800 pikseldir.

Resim iste

Bir yer için 10 adede kadar fotoğraf isteyebilirsiniz:

  1. [GMSPlacesClient lookUpPhotosForPlaceID] numaralı telefonu arayın, yer kimliği ve GMSPlacePhotoMetadataResultCallback geri araması iletin. Bu istek, GMSPlacePhotoMetadataList nesnesiyle GMSPlacePhotoMetadataResultCallback geri çağırmasını yapar.

  2. Geri çağırmadaki GMSPlacePhotoMetadataList nesnesinden, results dizi özelliği fotoğrafları içerir ve her fotoğrafın bir GMSPlacePhotoMetadata nesnesiyle temsil edilir.

  3. İstenen resmin maksimum boyutunu da içeren bir GMSFetchPhotoRequest oluşturmak için GMSPlacePhotoMetadata nesnesini kullanın.

  4. Dizideki her GMSPlacePhotoMetadata nesnesi için GMSFetchPhotoRequest nesnesini ileten [GMSPlacesClient fetchPhotoWithRequest:callback:] çağrısı yapın. Bu yöntemde, UIImage olarak kullanılabilir bir bit eşlem resmiyle GMSFetchPhotoResultCallback geri çağırması yapılır.

Bir yer için fotoğraf istemenin bir başka yolu da, alan listesine GMSPlacePropertyPhotos öğesini de ekleyerek Yer Ayrıntıları (Yeni) isteğinde bulunmaktır. Yer Ayrıntıları çağrısı yapmanın avantajı, yanıt GMSPlace nesnesinin fotoğrafları ve yer için istediğiniz diğer 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
    }
  }];
}];

GooglePlacesSwift

// 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 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ıf yapılmadan kullanılabilir veya gerekli atıf resmin bir parçası olarak eklenir. Ancak döndürülen GMSPlacePhotoMetadata örneğinde attributions veya authorAttribution bulunuyorsa bu atıfları, görüntüyü görüntülediğiniz her yerde uygulamanıza eklemeniz gerekir. Atıflar ile ilgili belgeleri inceleyin.