Place Photos

Pilih platform: Android iOS JavaScript Layanan Web

Anda dapat menggunakan Places SDK for iOS untuk meminta foto tempat yang akan ditampilkan aplikasi Anda. Foto yang dikembalikan oleh layanan foto berasal dari berbagai sumber, termasuk pemilik bisnis dan foto kontribusi pengguna. Untuk mengambil foto untuk suatu tempat, Anda harus melakukan langkah-langkah berikut:

  1. Panggil [GMSPlacesClient fetchPlaceFromPlaceId], meneruskan string dengan ID tempat dan callback. Tindakan ini akan memanggil callback dengan GMSPlacePhotoMetadataList .
  2. Di GMSPlacePhotoMetadataList objek mengakses results lalu pilih foto yang akan dimuat dari array.
  3. Untuk setiap GMSPlacePhotoMetadata untuk memuat dari daftar ini, panggil [GMSPlacesClient loadPlacePhoto:callback:] atau [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:]. Ini akan memanggil callback dengan UIImage yang bisa dipakai. Foto dapat memiliki maksimum dengan lebar atau tinggi 1600 piksel.

Kode contoh

Contoh metode berikut mengambil ID tempat dan mendapatkan foto pertama di daftar yang ditampilkan. Anda dapat menggunakan metode ini sebagai {i>template<i} untuk metode yang akan Anda buat di aplikasi Anda sendiri.

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

Menyimpan ke cache

Foto dimuat menggunakan [GMSPlacesClient loadPlacePhoto:callback:] atau [GMSPlacesClient loadPlacePhoto:constrainedToSize:scale:callback:] di-cache baik di disk maupun dalam memori oleh sistem pemuatan URL Foundation dalam NSURLCache yang dibagikan.

Untuk mengonfigurasi perilaku penyimpanan dalam cache, Anda dapat mengubah cache URL bersama menggunakan [NSURLCache setSharedURLCache:] di application:didFinishLaunchingWithOptions: delegasi aplikasi Anda .

Jika tidak ingin aplikasi Anda membagikan NSURLCache dengan Places SDK for iOS, Anda dapat membuat NSURLCache baru dan menggunakan hanya dalam aplikasi Anda tanpa menyetelnya sebagai cache bersama.

Atribusi

Umumnya, foto tempat dapat digunakan tanpa atribusi, atau akan memiliki atribusi yang diperlukan yang disertakan sebagai bagian dari gambar. Namun, jika nilai GMSPlacePhotoMetadata menyertakan atribusi, Anda harus menyertakan atribusi tambahan dalam aplikasi di mana pun Anda menampilkan gambar. Perhatikan bahwa link di kolom atribusi harus dapat diketuk. Lihat dokumentasi tentang atribusi.

Batas penggunaan

Pengambilan gambar menghabiskan satu unit kuota; tidak ada batas penggunaan untuk mengambil metadata foto. Baca selengkapnya tentang penggunaan dan penagihan.