Yer Fotoğrafları (Yeni)

Platform seçin: Android iOS Web Hizmeti

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Uygulamanızda gösterilecek yer fotoğrafları istemek için iOS için Yerler SDK'sını (Yeni) kullanabilirsiniz. Fotoğraf hizmeti tarafından döndürülen fotoğraflar, işletme sahipleri ve kullanıcı tarafından gönderilen fotoğraflar da dahil olmak üzere çeşitli kaynaklardan gelir.

Fotoğraflar, UIImage nesnesiyle temsil edilen bit eşlem resimlerdir. Bir bit eşlem resmi en fazla 4.800 x 4.800 piksel boyutunda olabilir.

Resim isteğinde bulunma

Bir yer için en fazla 10 fotoğraf isteğinde bulunabilirsiniz:

  1. Yer kimliği ve GMSPlacePhotoMetadataResultCallback geri çağırma işlevi ileterek Call [GMSPlacesClient lookUpPhotosForPlaceID] işlevini çağırın. Bu istek, GMSPlacePhotoMetadataList nesnesiyle GMSPlacePhotoMetadataResultCallback geri çağırma işlevini çağırır.

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

  3. İstenen resmin maksimum boyutu da dahil olmak üzere GMSFetchPhotoRequest oluşturmak için GMSPlacePhotoMetadata nesnesini kullanın.

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

Bir yer için fotoğraf istemenin başka bir yolu da alan listesine GMSPlacePropertyPhotos dahil ederek Yer Ayrıntıları (Yeni) isteğinde bulunmaktır. 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ı elde eder. Bu yöntemi, kendi uygulamanızda oluşturacağınız yöntem için şablon olarak kullanabilirsiniz.

Places Swift SDK'sı

// 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
}

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
    }
  }];
}];

Önbelleğe alma

[GMSPlacesClient loadPlacePhoto:callback:] veya [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] kullanılarak yüklenen fotoğraflar, paylaşılan NSURLCache'daki 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 [NSURLCache setSharedURLCache:] application:didFinishLaunchingWithOptions: yöntemini kullanarak paylaşılan URL önbelleğini değiştirebilirsiniz.

Uygulamanızın iOS için Places SDK ile 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 bulunmadan kullanılabilir veya gerekli atıf, resmin bir parçası olarak eklenir. Ancak, döndürülen GMSPlacePhotoMetadata örneği herhangi bir attributions veya authorAttribution içeriyorsa bu ilişkilendirmeleri, resmi gösterdiğiniz her yerde uygulamanıza eklemeniz gerekir. İlişkilendirmeler ile ilgili dokümanları inceleyin.