Place Details

Pilih platform: Android iOS JavaScript Layanan Web

Places SDK for iOS memberikan informasi yang lengkap kepada aplikasi Anda 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.

Detail tempat

Tujuan GMSPlace menyediakan informasi tentang tempat tertentu. Anda bisa mendapatkan GMSPlace dengan cara berikut:

Saat meminta tempat, Anda harus menentukan jenis data tempat kembali. Untuk melakukannya, teruskan GMSPlaceField, yang menentukan data jenis yang akan ditampilkan. Ini adalah pertimbangan penting, karena akan mempengaruhi biaya untuk setiap permintaan.

Karena hasil data tempat tidak boleh kosong, hanya tempat hasil dengan data dikembalikan (misalnya, jika tempat yang diminta tidak memiliki foto, kolom photos tidak akan ada dalam hasil).

Contoh berikut meneruskan daftar dua nilai kolom untuk menentukan data yang ditampilkan oleh permintaan:

Swift

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

      // Specify the place data types to return.
      let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
      UInt(GMSPlaceField.placeID.rawValue))
  

Objective-C

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

      // Specify the place data types to return.
      GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
  

Pelajari kolom tempat lebih lanjut. Untuk informasi selengkapnya tentang cara penagihan permintaan data Tempat, lihat Penggunaan dan Penagihan.

Tujuan GMSPlace dapat berisi data tempat berikut:

  • name – Nama tempat.
  • editorialSummary – Memberikan deskripsi sederhana tentang suatu tempat.
  • placeID – ID tekstual untuk tempat tersebut. {i>Read<i} selengkapnya tentang ID tempat di bagian selanjutnya dari halaman ini.
  • coordinate – Lokasi geografis tempat, ditetapkan sebagai koordinat lintang dan bujur.
  • phoneNumber – Nomor telepon tempat tersebut, di dalam format internasional.
  • formattedAddress – Alamat ini yang dapat dibaca manusia lokasi HTTP/HTTPS.

    Sering kali alamat ini sama dengan alamat pos. Harap ingat bahwa beberapa negara, seperti Inggris Raya, tidak mengizinkan distribusi alamat pos sebenarnya karena adanya pembatasan pemberian lisensi.

    Alamat yang diformat secara logis terdiri dari satu atau beberapa komponen alamat. Misalnya, alamat "111 8th Avenue, New York, NY" terdiri atas komponen berikut: "111" (nomor jalan), "8th Avenue" (rute), "New York" (kota), dan "NY" (negara bagian AS).

    Jangan mengurai alamat berformat secara terprogram. Sebagai gantinya, Anda harus menggunakan komponen alamat individual, yang disertakan oleh respons API selain kolom alamat yang diformat.

  • openingHours – Jam buka untuk tempat (seperti yang diwakili oleh GMSOpeningHours). Telepon GMSOpeningHours.weekdayText untuk mendapatkan daftar string yang dilokalkan jam buka harian selama seminggu. Telepon GMSOpeningHours.Periods untuk menampilkan daftar GMSPeriod dengan informasi yang lebih mendetail yang setara dengan data yang disediakan oleh weekdayText. Catatan: Jika suatu tempat selalu buka, jangka waktu akan direpresentasikan sebagai Minggu pada tengah malam, dan closeEvent adalah null.
  • currentOpeningHours dan secondaryOpeningHours – Kolom yang mengambil hari libur dan perubahan sementara dalam jadwal untuk suatu tempat.
  • addressComponents – Array dari Objek GMSAddressComponent yang mewakili komponen untuk suatu tempat. Komponen-komponen ini disediakan untuk mengekstrak informasi terstruktur tentang alamat suatu tempat, misalnya menemukan kota lokasi suatu tempat. Jangan gunakan komponen ini untuk pemformatan alamat; sebagai gantinya, gunakan formattedAddress , yang memberikan alamat berformat yang dilokalkan.

    Perhatikan fakta berikut tentang addressComponents array:

    • {i>Array komponen<i} alamat dapat berisi lebih banyak komponen daripada formattedAddress.
    • Himpunan ini tidak harus mencakup semua entitas politik yang berisi alamat, selain yang tercantum dalam formattedAddress.
    • Format respons tidak dijamin tetap sama antara permintaan. Secara khusus, jumlah addressComponents bervariasi berdasarkan alamat yang diminta dan dapat berubah seiring waktu untuk alamat yang sama. Komponen dapat mengubah posisi dalam array. Jenis komponen dapat berubah. Komponen tertentu mungkin hilang dalam respons berikutnya.
  • userRatingsTotal – Menunjukkan jumlah ulasan rating tempat ini.

Tujuan GMSPlace berisi fungsi anggota berikut:

  • isOpen menghitung apakah suatu tempat buka pada waktu tertentu, berdasarkan openingHours dan UTCOffsetMinutes, serta tanggal dan waktu saat ini.
  • isOpenAtDate menghitung apakah suatu tempat buka pada tanggal tertentu, berdasarkan openingHours dan UTCOffsetMinutes, serta tanggal dan waktu saat ini.
  • Saat menggunakan fungsi ini untuk mendapatkan jam buka dan/atau tanggal, fungsi awal fetchPlaceFromPlaceID: atau findPlaceLikelihoodsFromUserLocationWithPlaceFields: permintaan harus menentukan KEDUA GMSPlaceFieldOpeningHours dan GMSPlaceFieldUTCOffsetMinutes kolom. Jika salah satu kolom ini tidak ada, GMSPlace yang dihasilkan tidak akan mengandung jam buka atau tanggal, dan panggilan akan mengembalikan GMSPlaceOpenStatusUnknown. Untuk memastikan hasil yang akurat, minta GMSPlaceFieldBusinessStatus dan GMSPlaceFieldUTCOffsetMinutes kolom di permintaan tempat asli Anda. Jika tidak diminta, diasumsikan bahwa hingga bisnis dapat beroperasi.

    Tonton video ini untuk mengetahui cara menggunakannya. isOpen dengan Place Details.

Dapatkan jam buka luar biasa

Meskipun jam buka reguler diperoleh melalui openingHours, currentOpeningHours, dan secondaryOpeningHours mendukung perubahan hari libur dan jadwal sementara. Jam istimewa untuk hari-hari khusus ini dapat difilter dan ditampilkan jika tersedia.

Swift

    func examineOpeningHours(place: GMSPlace) {

      // Check if the current opening hours contains a special day that has exceptional hours
      guard let currentOpeningHours = place.currentOpeningHours else { return }
      if let specialDays = currentOpeningHours.specialDays {
        guard !specialDays.isEmpty else { return }
        if let specialDay = specialDays.filter { $0.isExceptional }.first  {
          // Indicate exceptional hours
        }
      }

      // Check if current opening hours contains a truncated time period
      let periods = currentOpeningHours.periods

      if !periods.isEmpty {
        for period in periods {
          let open = period.open
          let close = period.close

          if let open = open {
            let date = open.date

            if open.isTruncated {
              // Indicate truncated time period
            }
          }
        }
      }

      // Check if the place's secondary opening hours indicate when delivery is available
      let secondaryOpeningHours = place.secondaryOpeningHours
      guard let hoursType = secondaryOpeningHours.first?.hoursType else {
      return
      }

      if (hoursType == GMSPlaceHoursTypeDelivery) {
        // Indicate hours where delivery is available
      }
  }

Objective-C

- (void)examineOpeningHours:(GMSPlace *) place {

    // Check if the current opening hours contains a special day that has exceptional hours
    GMSOpeningHours *currentOpeningHours = place.currentOpeningHours;
    if (currentOpeningHours != nil) {
      NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays;
      if ([specialDays count] != 0) {
        for (GMSPlaceSpecialDay *specialDay in specialDays) {
          NSDate *date = specialDay.date;
          if ([specialDay isExceptional]) {
            // Indicate exceptional hours
          }
        }
      }
    }

    // Check if current opening hours contains a truncated time period
    NSArray <GMSPeriod *> * periods = currentOpeningHours.periods;

    if ([periods count] != 0) {
      for (GMSPeriod * period in periods) {
        GMSTimeOfWeek *open = period.open;
        GMSTimeOfWeek *close = period.close;

        if (open) {
          if ([open isTruncated]) {
            // Indicate truncated time period
          }
        }
      }
    }

    // Check if the place's secondary opening hours indicate when delivery is available
    GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours;
    GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType;

    if (hoursType == GMSPlaceHoursTypeDelivery) {
      // Indicate hours where delivery is available
    }
}

Mendapatkan tempat melalui ID

ID tempat adalah ID tekstual yang secara unik mengidentifikasi tempat. Di beberapa Places SDK for iOS, Anda dapat mengambil ID tempat dari GMSPlace . Anda bisa menyimpan ID tempat dan menggunakannya untuk mengambil GMSPlace objek lagi nanti.

Untuk mendapatkan tempat menurut ID, panggil GMSPlacesClient fetchPlaceFromPlaceID:, yang meneruskan parameter berikut:

  • String yang berisi ID Tempat.
  • Satu atau beberapa GMSPlaceField, yang menentukan jenis data yang akan ditampilkan.
  • Token sesi jika panggilan dilakukan untuk mengakhiri kueri pelengkapan otomatis. Jika tidak, teruskan nol.
  • GMSPlaceResultCallback untuk menangani hasil.

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 fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
  UInt(GMSPlaceField.placeID.rawValue))!

placesClient?.fetchPlace(fromPlaceID: placeID, 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 {
    self.lblName?.text = place.name
    print("The selected place is: \(place.name)")
  }
})

Objective-C

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

// Specify the place data types to return.
GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);

[_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) {
    NSLog(@"The selected place is: %@", [place name]);
  }
}];

Menampilkan atribusi dalam aplikasi Anda

Saat aplikasi Anda menampilkan informasi yang diperoleh dari GMSPlacesClient lookUpPlaceID:callback:, aplikasi juga harus menampilkan atribusi. Lihat dokumentasi tentang atribusi.

Selengkapnya tentang ID tempat

ID tempat yang digunakan di Places SDK for iOS adalah ID yang sama dengan digunakan dalam 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.

Untuk informasi selengkapnya, lihat ringkasan ID tempat.