Places SDK for iOS memberikan informasi lengkap tentang aplikasi Anda di berbagai tempat, termasuk nama dan alamat tempat tersebut, lokasi geografis yang ditentukan sebagai koordinat lintang/bujur, jenis tempat (seperti klub malam, toko hewan peliharaan, museum), dan lainnya. Untuk mengakses informasi ini bagi tempat tertentu, Anda dapat menggunakan ID tempat, yaitu ID stabil yang mengidentifikasi tempat secara unik.
Detail tempat
Class
GMSPlace
memberikan informasi tentang tempat tertentu. Anda bisa mendapatkan objek GMSPlace
dengan cara berikut:
- Panggil
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
. Lihat panduan untuk mendapatkan tempat saat ini. - Panggil
GMSPlacesClient fetchPlaceFromPlaceID:
, dengan meneruskanGMSPlaceField
, ID tempat, dan metode callback. Untuk permintaan Place Details, jika Anda tidak menentukan setidaknya satu kolom yang berisi permintaan, atau jika Anda menghapus parameterfields
dari permintaan, SEMUA kolom yang mungkin akan ditampilkan, dan Anda akan ditagih biaya sebagaimana mestinya. Lihat panduan untuk mendapatkan tempat berdasarkan ID.
Saat meminta tempat, Anda harus menentukan jenis data tempat yang akan dikembalikan. Untuk melakukannya, teruskan GMSPlaceField
, yang menentukan jenis
data yang akan ditampilkan. Pertimbangan ini penting, karena akan memengaruhi biaya untuk setiap permintaan.
Karena hasil data tempat tidak boleh kosong, hanya hasil tempat dengan data yang 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.
Class
GMSPlace
dapat berisi data tempat berikut:
name
– Nama tempat.editorialSummary
– Memberikan deskripsi sederhana untuk suatu tempat.placeID
– ID tekstual untuk tempat. Baca selengkapnya tentang ID tempat di sisa halaman ini.coordinate
– Lokasi geografis suatu tempat, yang ditetapkan sebagai koordinat lintang dan bujur.phoneNumber
– Nomor telepon tempat tersebut, dalam format internasional.formattedAddress
– Alamat lokasi ini yang dapat dibaca orang.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 olehGMSOpeningHours
). PanggilGMSOpeningHours.weekdayText
untuk mendapatkan daftar string yang dilokalkan dari jam buka harian untuk minggu tersebut. PanggilGMSOpeningHours.Periods
untuk menampilkan daftarGMSPeriod
dengan informasi lebih detail yang setara dengan data yang disediakan olehweekdayText
. Catatan: Jika tempat selalu buka, jangka waktu direpresentasikan sebagai Minggu pada tengah malam, dancloseEvent
adalah null.currentOpeningHours
dansecondaryOpeningHours
– Kolom yang mengambil perubahan hari libur dan sementara dalam jadwal untuk suatu tempat.addressComponents
– Array objekGMSAddressComponent
yang merepresentasikan komponen alamat untuk suatu tempat. Komponen ini disediakan untuk mengekstrak informasi terstruktur tentang alamat suatu tempat, misalnya menemukan kota tempat suatu tempat berada. Jangan gunakan komponen ini untuk pemformatan alamat; sebagai gantinya, gunakan propertiformattedAddress
, yang menyediakan alamat berformat yang dilokalkan.Perhatikan fakta berikut tentang array
addressComponents
:- Array komponen alamat dapat berisi lebih banyak komponen daripada
formattedAddress
. - Array tidak harus selalu menyertakan semua entitas politik yang
berisi alamat, selain dari yang disertakan dalam
formattedAddress
. - Format respons tidak dijamin tetap sama di antara
permintaan. Secara khusus, jumlah
addressComponents
bervariasi berdasarkan alamat yang diminta dan dapat berubah dari waktu ke waktu untuk alamat yang sama. Komponen dapat mengubah posisi dalam array. Jenis komponen dapat berubah. Komponen tertentu mungkin tidak ada dalam respons berikutnya.
- Array komponen alamat dapat berisi lebih banyak komponen daripada
userRatingsTotal
– Menampilkan jumlah ulasan yang membentuk rating tempat.
Class
GMSPlace
berisi fungsi anggota berikut:
-
isOpen
menghitung apakah tempat buka pada waktu tertentu, berdasarkanopeningHours
danUTCOffsetMinutes
, serta tanggal dan waktu saat ini. isOpenAtDate
menghitung apakah tempat buka pada tanggal tertentu, berdasarkanopeningHours
danUTCOffsetMinutes
, serta tanggal dan waktu saat ini.
Saat menggunakan fungsi ini untuk mendapatkan waktu buka dan/atau tanggal, permintaan
fetchPlaceFromPlaceID:
atau findPlaceLikelihoodsFromUserLocationWithPlaceFields:
yang asli harus menentukan KEDUA kolom GMSPlaceFieldOpeningHours
dan GMSPlaceFieldUTCOffsetMinutes
. Jika salah satu kolom ini tidak ada, objek GMSPlace
yang dihasilkan tidak akan berisi waktu atau tanggal buka, dan panggilan akan menampilkan GMSPlaceOpenStatusUnknown
. Untuk memastikan hasil yang akurat, minta
kolom GMSPlaceFieldBusinessStatus
dan GMSPlaceFieldUTCOffsetMinutes
dalam permintaan tempat asli Anda. Jika tidak diminta, diasumsikan bahwa
bisnis tersebut beroperasi.
isOpen
dengan Place Details.
Dapatkan jam buka yang luar biasa
Meskipun jam buka reguler diperoleh melaluiopeningHours
, currentOpeningHours
dan secondaryOpeningHours
mendukung perubahan jadwal liburan dan jadwal sementara.
Jam buka khusus 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
Places SDK for iOS, Anda dapat mengambil ID tempat dari
objek
GMSPlace
. Anda juga bisa menyimpan ID tempat dan menggunakannya untuk mengambil objek GMSPlace
lagi nanti.
Untuk mendapatkan tempat berdasarkan ID, panggil
GMSPlacesClient
fetchPlaceFromPlaceID:
, dengan 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 menyimpulkan kueri pelengkapan otomatis. Jika tidak, teruskan nilai nil.
GMSPlaceResultCallback
untuk menangani hasilnya.
API memanggil metode callback yang ditentukan, dengan meneruskan objek
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
Jika 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 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 dari satu ID tempat.
Ada keadaan yang dapat menyebabkan tempat mendapatkan ID tempat baru. Misalnya, hal ini bisa terjadi jika bisnis pindah ke lokasi baru.
Saat meminta tempat dengan menetapkan ID tempat, Anda bisa yakin bahwa Anda akan selalu menerima tempat yang sama dalam respons (jika tempat tersebut masih ada). Akan tetapi, perhatikan bahwa respons itu mungkin berisi ID tempat yang berbeda dari yang diminta dalam permintaan Anda.
Untuk informasi selengkapnya, lihat ringkasan ID tempat.