Yer Fotoğrafları (Yeni)

Platform seçin: Android iOS Web Hizmeti

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:

  1. 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 GMSPlacePhotoMetadataList nesnesi ile çağırır.

  2. Geri çağırmadaki GMSPlacePhotoMetadataList nesnesinde, results dizisinin mülkü fotoğrafları içerir. Her fotoğraf, bir GMSPlacePhotoMetadata nesnesi ile temsil edilir.

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

  4. Dizideki her GMSPlacePhotoMetadata nesnesi için GMSFetchPhotoRequest 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.