Place Details (Baru)

Pilih platform: Android iOS JavaScript Layanan Web

Places SDK for iOS (Baru) memberi aplikasi Anda informasi yang lengkap tentang tempat, termasuk nama dan alamat tempat, informasi geografis, lokasi yang ditetapkan sebagai koordinat garis lintang/garis bujur, tipe tempat (seperti seperti klub malam, toko hewan peliharaan, museum), dan banyak lagi. Untuk mengakses informasi ini tempat tertentu, Anda bisa menggunakan ID tempat, sebuah pengenal stabil yang secara unik mengidentifikasi tempat.

Mendapatkan detail tempat

Tujuan GMSPlace berisi informasi tentang tempat tertentu, termasuk semua {i>data field<i} yang ditampilkan di Kolom Data Tempat (Baru). Dapatkan GMSPlace dengan memanggil GMSPlacesClient fetchPlaceWithRequest:, meneruskan objek GMSFetchPlaceRequest dan objek metode callback jenis GMSPlaceResultCallback.

Objek GMSFetchPlaceRequest menentukan:

  • (Wajib) ID tempat, ID unik untuk tempat di Google Places dalam database dan Google Maps.
  • (Wajib) Daftar kolom yang akan ditampilkan dalam objek GMSPlace, juga disebut sebagai field mask, seperti yang ditentukan oleh GMSPlaceProperty Jika Anda tidak menentukan setidaknya satu kolom dalam daftar kolom, atau jika Anda menghilangkan daftar kolom, maka panggilan akan menampilkan error.
  • (Opsional) Kode wilayah yang digunakan untuk memformat respons.
  • (Opsional) Token sesi yang digunakan untuk mengakhiri sesi Autocomplete (Baru).

Mengirimkan permintaan Place Details

Contoh ini mendapatkan tempat berdasarkan ID, dengan meneruskan parameter berikut:

  • ID tempat ChIJV4k8_9UodTERU5KXbkYpSYs.
  • Daftar kolom yang menentukan untuk menampilkan nama tempat dan URL situs.
  • GMSPlaceResultCallback untuk menangani hasilnya.

API akan memanggil metode callback yang ditetapkan, dengan meneruskan GMSPlace . Jika tempat tidak ditemukan, objek tempat akan nol.

Swift

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Specify the place data types to return.
let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue}

// Create the GMSFetchPlaceRequest object.
let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil)

client.fetchPlace(with: fetchPlaceRequest, callback: {
  (place: GMSPlace?, error: Error?) in
  guard let place, error == nil else { return }
  print("Place found: \(String(describing: place.name))")
})

Objective-C

// A hotel in Saigon with an attribution.
NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs";

// Specify the place data types to return.
NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite];

// Create the GMSFetchPlaceRequest object.
GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil];

[placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) {
    if (error != nil) {
      NSLog(@"An error occurred %@", [error localizedDescription]);
      return;
    } else {
    NSLog(@"Place Found: %@", place.name);
    NSLog(@"The place URL: %@", place.website);
  }
}];

Places Swift SDK for iOS (Pratinjau)

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
let fetchPlaceRequest = FetchPlaceRequest(
  placeID: placeID,
  placeProperties: [.name, .website]
)
switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
case .success(let place):
  // Handle place
case .failure(let placesError):
  // Handle error
}

Respons Place Details

Place Details menampilkan Objek GMSPlace yang berisi detail tentang tempat. Hanya kolom yang ditentukan dalam daftar kolom yang diisi di objek GMSPlace.

Mendapatkan status buka

Objek GMSPlacesClient berisi fungsi anggota yang disebut isOpenWithRequest (isOpenRequest di Swift dan isPlaceOpenRequest di GooglePlacesSwift) yang menampilkan respons yang menunjukkan apakah tempat tersebut saat ini buka, berdasarkan waktu yang ditentukan dalam panggilan.

Metode ini mengambil satu argumen dari jenis GMSPlaceIsOpenWithRequest yang berisi:

  • Objek GMSPlace, atau string yang menentukan ID tempat. Untuk informasi selengkapnya tentang membuat objek Tempat dengan kolom yang diperlukan, lihat Detail tempat.
  • Objek NSDate (Obj-C) atau Date (Swift) opsional yang menentukan waktu yang ingin Anda periksa. Jika tidak ada waktu yang ditentukan, defaultnya adalah sekarang.
  • Metode GMSPlaceOpenStatusResponseCallback untuk menangani respons.
  • &gt;

Metode GMSPlaceIsOpenWithRequest mengharuskan kolom berikut ditetapkan di objek GMSPlace:

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

Jika kolom ini tidak diberikan di objek Tempat, atau jika Anda meneruskan ID tempat, metode ini akan menggunakan GMSPlacesClient GMSFetchPlaceRequest: untuk mengambilnya.

isOpenWithRequest tanggapan

isOpenWithRequest menampilkan objek GMSPlaceIsOpenResponse yang berisi nilai boolean bernama status yang menunjukkan apakah bisnis buka, tutup, atau apakah statusnya tidak diketahui.

Language Nilai jika terbuka Nilai jika ditutup Nilai jika status tidak diketahui
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown
GooglePlacesSwift (Pratinjau) true false nil

Penagihan untuk isOpenWithRequest

  • Kolom GMSPlacePropertyUTCOffsetMinutes dan GMSPlacePropertyBusinessStatus dikenai biaya berdasarkan SKU Basic Data. Sisa Jam Buka dikenai biaya berdasarkan SKU Place Details (Advanced).
  • Jika objek GMSPlace Anda sudah memiliki kolom ini dari permintaan sebelumnya, Anda tidak akan ditagih lagi.

Contoh: Membuat permintaan GMSPlaceIsOpenWithRequest

Contoh berikut menunjukkan cara melakukan inisialisasi GMSPlaceIsOpenWithRequest dalam objek GMSPlace yang ada.

Swift

    let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil)
      GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in
        if let error = error {
          // Handle Error
        }
        switch response.status {
          case .open:
            // Handle open
          case .closed:
            // Handle closed
          case .unknown:
            // Handle unknown
        }
      }
        

Objective-C

          GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil];
  
          [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) {
            if (error) {
              // Handle error
            }
  
            switch (response.status) {
              case GMSPlaceOpenStatusOpen:
                // Handle open
              case GMSPlaceOpenStatusClosed:
                // Handle closed
              case GMSPlaceOpenStatusUnknown:
                // Handle unknown
            }
          }];
          

GooglePlacesSwift

          let isOpenRequest = IsPlaceOpenRequest(place: place)
          switch await placesClient.isPlaceOpen(with: isOpenRequest) {
            case .success(let isOpenResponse):
              switch isOpenResponse.status {
                case true:
                  // Handle open
                case false:
                  // Handle closed
                case nil:
                  // Handle unknown
            case .failure(let placesError):
              // Handle error
          }
          

Parameter wajib

Gunakan objek GMSFetchPlaceRequest untuk menentukan parameter yang diperlukan.

ID tempat

ID tempat yang digunakan di Places SDK for iOS adalah ID yang sama seperti yang digunakan di Places API, Places SDK for Android dan Google API lainnya. Setiap ID tempat hanya bisa merujuk ke satu tempat, tetapi satu tempat bisa memiliki lebih banyak dari satu ID tempat.

Ada situasi yang dapat menyebabkan suatu tempat mendapatkan ID tempat baru. Misalnya, hal ini bisa terjadi jika bisnis pindah ke lokasi baru.

Bila Anda meminta tempat dengan menetapkan ID tempat, Anda bisa yakin bahwa Anda akan selalu menerima respons yang sama (jika tempatnya masih ada). Namun, perhatikan bahwa respons mungkin berisi ID tempat yang berbeda dari yang dimaksud dalam permintaan Anda.

Daftar kolom

Saat meminta detail tempat, Anda harus menentukan data untuk ditampilkan dalam objek GMSPlace untuk tempat sebagai mask kolom. Untuk menentukan mask kolom meneruskan array nilai dari GMSPlaceProperty ke objek GMSFetchPlaceRequest. Penyamaran kolom adalah praktik desain yang baik untuk memastikan Anda tidak meminta data yang tidak perlu, yang membantu menghindari waktu pemrosesan dan biaya penagihan yang tidak perlu.

Tentukan satu atau beberapa kolom berikut:

  • Kolom berikut memicu SKU Place Details (ID Only):

    GMSPlacePropertyPlaceID, GMSPlacePropertyName, GMSPlacePropertyPhotos

  • Kolom berikut memicu SKU Place Details (Location Only):

    GMSPlacePropertyAddressComponents, GMSPlacePropertyFormattedAddress, GMSPlacePropertyCoordinate, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyViewport

  • Kolom berikut memicu SKU Place Details (Basic):

    GMSPlacePropertyBusinessStatus, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyWheelchairAccessibleEntrance

  • Kolom berikut memicu SKU Place Details (Advanced):

    GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite

  • Kolom berikut memicu SKU Place Details (Preferred):

    GMSPlacePropertyCurbsidePickup, GMSPlacePropertyDelivery, GMSPlacePropertyDineIn, GMSPlacePropertyEditorialSummary, GMSPlacePropertyReservable, GMSPlacePropertyReviews, GMSPlacePropertyServesBeer, GMSPlacePropertyServesBreakfast, GMSPlacePropertyServesBrunch, GMSPlacePropertyServesDinner, GMSPlacePropertyServesLunch, GMSPlacePropertyServesVegetarianFood, GMSPlacePropertyServesWine, GMSPlacePropertyTakeout

Contoh berikut ini meneruskan daftar dua nilai kolom untuk menentukan agar objek GMSPlace yang ditampilkan oleh permintaan berisi Kolom name dan placeID:

Swift

// Specify the place data types to return.
let fields: [GMSPlaceProperty] = [.placeID, .name]
  

Objective-C

// Specify the place data types to return.
NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
  

Places Swift SDK for iOS (Pratinjau)

// Specify the place data types to return.
let fields: [PlaceProperty] = [.placeID, .displayName]
    

Parameter opsional

Gunakan objek GMSFetchPlaceRequest untuk menentukan parameter opsional.

regionCode

Kode wilayah yang digunakan untuk memformat respons, yang ditetapkan sebagai kode CLDR dua karakter. Parameter ini juga dapat memiliki efek bias pada hasil penelusuran. Tidak ada nilai default.

Jika nama negara kolom alamat dalam respons cocok dengan kode wilayah, kode negara akan dihilangkan dari alamat.

Sebagian besar kode CLDR identik dengan kode ISO 3166-1, dengan beberapa pengecualian. Misalnya, ccTLD Inggris Raya adalah "uk" (.co.uk) sedangkan kode ISO 3166-1-nya adalah "gb" (secara teknis untuk entitas "Inggris Raya dan Irlandia Utara"). Parameter ini dapat memengaruhi hasil berdasarkan hukum yang berlaku.

sessionToken

Token sesi adalah string buatan pengguna yang melacak Autocomplete Panggilan (Baru) sebagai "sesi". Pelengkapan Otomatis (Baru) menggunakan token sesi untuk mengelompokkan fase kueri dan pemilihan tempat dari penelusuran pelengkapan otomatis pengguna ke dalam sesi terpisah untuk tujuan penagihan. Token sesi diteruskan ke Place Details (Baru) panggilan yang mengikuti panggilan Autocomplete (Baru). Untuk informasi selengkapnya, lihat Token sesi.

Menampilkan atribusi dalam aplikasi Anda

Saat aplikasi Anda menampilkan informasi yang diperoleh dari GMSPlacesClient, seperti foto dan ulasan, aplikasi juga harus menampilkan atribusi yang diperlukan.

Misalnya, properti reviews dari objek GMSPlacesClient berisi array hingga lima GMSPlaceReview objek terstruktur dalam jumlah besar. Setiap objek GMSPlaceReview dapat berisi atribusi dan atribusi penulis. Jika Anda menampilkan ulasan di aplikasi, Anda juga harus menampilkan atribusi atau penulis atribusi.

Untuk informasi selengkapnya, lihat dokumentasi tentang atribusi.