Places SDK for iOS (Baru) memberi aplikasi Anda informasi lengkap tentang tempat, termasuk nama dan alamat tempat, lokasi geografis yang ditentukan sebagai koordinat lintang/bujur, jenis tempat (seperti klub malam, toko hewan peliharaan, museum), dan lainnya. Untuk mengakses informasi ini untuk tempat tertentu, Anda dapat menggunakan ID tempat, ID stabil yang secara unik mengidentifikasi tempat.
Mendapatkan detail tempat
Class
GMSPlace
berisi informasi tentang tempat tertentu, termasuk semua kolom data yang ditampilkan di
Kolom Data Tempat (Baru). Dapatkan objek
GMSPlace
dengan memanggil
GMSPlacesClient
fetchPlaceWithRequest:,
meneruskan objek GMSFetchPlaceRequest dan metode callback berjenis
GMSPlaceResultCallback.
Objek GMSFetchPlaceRequest menentukan:
- (Wajib) ID tempat, ID unik untuk tempat di database Google Places database dan di Google Maps.
- (Wajib) Daftar kolom yang akan ditampilkan dalam objek
GMSPlace, yang juga disebut mask kolom, seperti yang ditentukan olehGMSPlaceProperty. Jika Anda tidak menentukan setidaknya satu kolom dalam daftar kolom, atau jika Anda menghapus daftar kolom, panggilan akan menampilkan error. - (Opsional) Kode wilayah yang digunakan untuk memformat respons.
- (Opsional) Token sesi yang digunakan untuk mengakhiri sesi Autocomplete (Baru).
Membuat 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.
- A
GMSPlaceResultCallbackuntuk menangani hasilnya.
API memanggil metode callback yang ditentukan, dengan meneruskan
GMSPlace
objek. Jika tempat tidak ditemukan, objek tempat akan nol.
Places Swift SDK
// 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 }
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); } }];
Respons Place Details
Place Details menampilkan objek
GMSPlace yang berisi detail tentang tempat tersebut. Hanya kolom yang ditentukan dalam daftar kolom yang diisi dalam objek GMSPlace.
Mendapatkan status buka
Objek GMSPlacesClient berisi fungsi anggota bernama isOpenWithRequest (isOpenRequest di Swift dan isPlaceOpenRequest di GooglePlacesSwift) yang menampilkan respons yang menunjukkan apakah tempat tersebut saat ini buka atau tidak, berdasarkan waktu yang ditentukan dalam panggilan.
Metode ini menggunakan satu argumen berjenis GMSPlaceIsOpenWithRequest yang berisi:
- Objek
GMSPlaceobject, atau string yang menentukan ID tempat. Untuk mengetahui informasi selengkapnya tentang cara membuat objek Place dengan kolom yang diperlukan, lihat Detail tempat.
- Objek
NSDate(Obj-C) atauDate(Swift) opsional yang menentukan waktu yang ingin Anda periksa. Jika tidak ada waktu yang ditentukan, default-nya adalah sekarang. - Metode
GMSPlaceOpenStatusResponseCallbackuntuk menangani respons. >
Metode GMSPlaceIsOpenWithRequest mengharuskan kolom berikut ditetapkan dalam objek GMSPlace:
GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatusGMSPlacePropertyOpeningHoursGMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHours
Jika kolom ini tidak disediakan dalam objek Place, atau jika Anda meneruskan ID tempat, metode ini akan menggunakan GMSPlacesClient GMSFetchPlaceRequest: untuk mengambilnya.
Respons isOpenWithRequest
isOpenWithRequest menampilkan objek GMSPlaceIsOpenResponse yang berisi nilai boolean bernama status yang menunjukkan apakah bisnis buka, tutup, atau jika statusnya tidak diketahui.
| Language | Value if open | Value if closed | Value if status unknown |
|---|---|---|---|
| Places Swift | true |
false |
nil |
| Swift | .open |
.closed |
.unknown |
| Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
Penagihan untuk isOpenWithRequest
- Kolom
GMSPlacePropertyUTCOffsetMinutesdanGMSPlacePropertyBusinessStatusdikenai biaya berdasarkan SKU Basic Data. Jam Buka lainnya dikenai biaya berdasarkan SKU Place Details Enterprise. - Jika objek
GMSPlaceAnda sudah memiliki kolom ini dari permintaan sebelumnya, Anda tidak akan dikenai biaya lagi.
Contoh: Membuat permintaan GMSPlaceIsOpenWithRequest
Contoh berikut menunjukkan cara menginisialisasi GMSPlaceIsOpenWithRequest dalam objek GMSPlace yang ada.
Places Swift SDK
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 }
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 } }];
Parameter yang diperlukan
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 dapat merujuk ke satu tempat, tetapi satu tempat dapat memiliki lebih dari satu ID tempat.
Ada situasi yang dapat menyebabkan tempat mendapatkan ID tempat baru. Misalnya, hal ini bisa terjadi jika bisnis pindah ke lokasi baru.
Saat meminta tempat dengan menentukan ID tempat, Anda dapat yakin bahwa Anda akan selalu menerima tempat yang sama dalam respons (jika tempat tersebut masih ada). Namun, perhatikan bahwa respons mungkin berisi ID tempat yang berbeda dengan ID tempat dalam permintaan Anda.
Daftar kolom
Saat meminta detail tempat, Anda harus menentukan data yang akan ditampilkan dalam objek GMSPlace untuk tempat tersebut sebagai mask kolom. Untuk menentukan mask kolom, teruskan array nilai dari GMSPlaceProperty ke objek GMSFetchPlaceRequest.
Penyamaran kolom adalah praktik desain yang baik untuk memastikan Anda tidak meminta data yang tidak diperlukan. Cara ini akan membantu Anda menghindari waktu pemrosesan dan biaya penagihan yang tidak perlu.
Tentukan satu atau beberapa kolom berikut:
Kolom berikut memicu SKU Place Details Essentials ID Only:
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotosUntuk mengetahui daftar lengkap kolom dan SKU terkait, lihat Kolom Data Tempat (Baru).
Kolom berikut memicu SKU Place Details Essentials:
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewportUntuk mengetahui daftar lengkap kolom dan SKU terkait, lihat Kolom Data Tempat (Baru).
Kolom berikut memicu SKU Place Details Pro:
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntranceUntuk mengetahui daftar lengkap kolom dan SKU terkait, lihat Kolom Data Tempat (Baru).
Kolom berikut memicu SKU Place Details Pro:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteUntuk mengetahui daftar lengkap kolom dan SKU terkait, lihat Kolom Data Tempat (Baru).
Kolom berikut memicu SKU Place Details Enterprise:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeoutUntuk mengetahui daftar lengkap kolom dan SKU terkait, lihat Kolom Data Tempat (Baru).
Contoh berikut meneruskan daftar dua
nilai kolom
untuk menentukan bahwa objek GMSPlace yang ditampilkan oleh permintaan berisi kolom
name dan placeID:
Places Swift SDK
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
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];
Parameter opsional
Gunakan objek GMSFetchPlaceRequest untuk menentukan parameter opsional.
regionCode
Kode wilayah yang digunakan untuk memformat respons, yang ditentukan sebagai nilai kode CLDR dua karakter . Parameter ini juga dapat memberikan efek bias pada hasil penelusuran. Tidak ada nilai default.
Jika nama negara kolom alamat dalam respons cocok dengan kode wilayah, kode negara akan dihapus 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 "The United Kingdom of Great Britain and Northern Ireland"). Parameter ini dapat memengaruhi hasil berdasarkan hukum yang berlaku.
sessionToken
Token sesi adalah string yang dibuat pengguna yang melacak panggilan Autocomplete (Baru) sebagai "sesi". Autocomplete (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 panggilan Place Details (Baru) yang mengikuti panggilan Autocomplete (Baru). Untuk mengetahui 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. Setiap objek GMSPlaceReview dapat berisi atribusi dan atribusi penulis.
Jika Anda menampilkan ulasan di aplikasi, Anda juga harus menampilkan atribusi atau atribusi penulis.
Untuk mengetahui informasi selengkapnya, lihat dokumentasi tentang atribusi.