Yerin Fotoğrafları

Uygulamanızda gösterilecek yer fotoğrafları istemek 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ı tarafından gönderilen fotoğraflar da dahil olmak üzere çeşitli kaynaklardan alınır. Bir yerin fotoğraflarını almak için aşağıdaki adımları uygulamanız gerekir:

  1. Bir yer kimliği ve geri çağırma ile dize ileterek [GMSPlacesClient fetchPlaceFromPlaceId]'ı arayın. Bu işlem, geri çağırmayı GMSPlacePhotoMetadataList nesnesiyle çağırır.
  2. GMSPlacePhotoMetadataList nesnesine erişin, results özelliğini kullanın ve diziden yüklenecek fotoğrafları seçin.
  3. Bu listeden yüklenecek her GMSPlacePhotoMetadata için [GMSPlacesClient loadPlacePhoto:callback:] veya [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] işlevini çağırın. Bunlar, geri çağırmayı kullanılabilir bir UIImage ile çağırır. Fotoğrafların maksimum genişliği veya yüksekliği 1.600 piksel olabilir.

Ö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.

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'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 uygulamanızda özel olarak 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 bir atıf içeriyorsa resmi uygulamanızda gösterdiğiniz her yere ek atfı eklemeniz gerekir. Atıftaki bağlantılara dokunulması gerektiğini unutmayın. İlişkilendirmeler ile ilgili belgelere bakın.

Kullanım sınırları

Bir resmi almak bir kota birimine mal olur. Fotoğraf meta verilerini almak için kullanım sınırı yoktur. Kullanım ve faturalandırma hakkında daha fazla bilgi edinin.