Permintaan Nearby Search (Baru) mengambil sebagai input region yang akan ditelusuri yang ditentukan sebagai lingkaran, yang ditentukan oleh koordinat lintang dan bujur titik pusat lingkaran dan radius dalam meter. Permintaan menampilkan daftar tempat yang cocok, yang masing-masing diwakili oleh objek
GMSPlace
dalam area penelusuran yang ditentukan.
Secara default, respons berisi tempat dari semua jenis dalam area penelusuran. Anda dapat secara opsional memfilter respons dengan menentukan daftar jenis tempat yang akan disertakan atau dikecualikan secara eksplisit dari respons. Misalnya, Anda dapat menentukan untuk hanya menyertakan tempat dalam respons yang berjenis "restoran", "toko roti", dan "kafe", atau mengecualikan semua tempat berjenis "sekolah".
Permintaan Nearby Search (Baru)
Buat permintaan Nearby Search dengan memanggil
GMSPlacesClient searchNearbyWithRequest:,
meneruskan objek
GMSPlaceSearchNearbyRequest
yang menentukan parameter permintaan dan metode callback, dengan jenis
GMSPlaceSearchNearbyResultCallback,
untuk menangani respons.
Objek GMSPlaceSearchNearbyRequest menentukan semua parameter
wajib dan opsional
untuk permintaan. Parameter yang diperlukan meliputi:
- Daftar kolom yang akan ditampilkan dalam objek
GMSPlace, yang juga disebut mask kolom, sebagaimana ditentukan olehGMSPlaceProperty. Jika Anda tidak menentukan setidaknya satu kolom dalam daftar kolom, atau jika Anda menghapus daftar kolom, panggilan akan menampilkan error. - Pembatasan lokasi, yang berarti lingkaran yang menentukan area penelusuran.
Contoh permintaan penelusuran di sekitar ini menentukan bahwa objek GMSPlace respons
berisi nama tempat (GMSPlacePropertyName) dan koordinat tempat
(GMSPlacePropertyCoordinate) untuk setiap objek GMSPlace dalam hasil
penelusuran. Selain itu, respons difilter untuk hanya menampilkan tempat berjenis "restoran" dan "kafe".
Places Swift SDK
let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500) let searchNearbyRequest = SearchNearbyRequest( locationRestriction: restriction, placeProperties: [ .name, .coordinate], includedTypes: [ .restaurant, .cafe ], ) switch await placesClient.searchNearby(with: searchNearbyRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Swift
// Array to hold the places in the response var placeResults: [GMSPlace] = [] // Define the search area as a 500 meter diameter circle in San Francisco, CA. let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500) // Specify the fields to return in the GMSPlace object for each place in the response. let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue} // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties) let includedTypes = ["restaurant", "cafe"] request.includedTypes = includedTypes let callback: GMSPlaceSearchNearbyResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchNearby(with: request, callback: callback)
Objective-C
// Array to hold the places in the response _placeResults = [NSArray array]; // Define the search area as a 500 meter diameter circle in San Francisco, CA. id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500); // Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return. GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc] initWithLocationRestriction:circularLocation placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]]; // Set the place types to filter on. NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ]; request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes]; [_placesClient searchNearbyWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { // Get list of places. _placeResults = places; } } ];
Respons Nearby Search
Nearby Search API menampilkan array kecocokan dalam bentuk objekGMSPlace, dengan satu objek GMSPlace per tempat yang cocok.
Mendapatkan status buka
Objek GMSPlacesClient berisi fungsi anggota bernama isOpenWithRequest (isOpenRequest di Swift dan isPlaceOpenRequest di GooglePlacesSwift) yang menampilkan respons yang menunjukkan apakah tempat saat ini buka, berdasarkan waktu yang ditentukan dalam panggilan.
Metode ini mengambil satu argumen jenis GMSPlaceIsOpenWithRequest yang berisi:
- Objek
GMSPlace, 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, setelan 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.
isOpenWithRequest tanggapan
isOpenWithRequest menampilkan objek GMSPlaceIsOpenResponse yang berisi nilai boolean bernama status yang menunjukkan apakah bisnis buka, tutup, atau jika statusnya tidak diketahui.
| Language | Nilai jika terbuka | Nilai jika ditutup | Nilai jika status tidak diketahui |
|---|---|---|---|
| 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 Enterprise Place Details. - 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 wajib
Gunakan objek GMSPlaceSearchNearbyRequest untuk menentukan parameter yang diperlukan untuk
penelusuran.
-
Daftar kolom
Saat meminta detail tempat, Anda harus menentukan data yang akan ditampilkan dalam objek
GMSPlaceuntuk tempat sebagai mask kolom. Untuk menentukan masker kolom, teruskan array nilai dariGMSPlacePropertyke objekGMSPlaceSearchNearbyRequest. Penyamaran kolom merupakan praktik desain yang baik untuk memastikan Anda tidak meminta data yang tidak perlu, sehingga membantu menghindari waktu pemrosesan dan biaya penagihan yang tidak perlu.Tentukan satu atau beberapa kolom berikut:
Kolom berikut memicu SKU Nearby Search Pro:
GMSPlacePropertyAddressComponents
GMSPlacePropertyBusinessStatus
GMSPlacePropertyCoordinate
GMSPlacePropertyFormattedAddress
GMSPlacePropertyName
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyPhotos
GMSPlacePropertyPlaceID
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyViewport
GMSPlacePropertyWheelchairAccessibleEntranceKolom berikut memicu SKU Nearby Search Enterprise:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteKolom berikut memicu SKU Nearby Search Enterprise Plus:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
Contoh berikut meneruskan daftar dua nilai kolom untuk menentukan bahwa objek
GMSPlaceyang ditampilkan oleh permintaan berisi kolomnamedanplaceID: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];
-
locationRestriction
Objek
GMSPlaceLocationRestrictionyang menentukan wilayah yang akan ditelusuri yang ditentukan sebagai lingkaran, yang ditentukan oleh titik tengah dan radius dalam meter. Radius harus antara 0,0 dan 50000,0, inklusif. Radius defaultnya adalah 0.0. Anda harus menetapkannya dalam permintaan ke nilai yang lebih besar dari 0,0.
Parameter opsional
Gunakan objek GMSPlaceSearchNearbyRequest untuk menentukan parameter opsional untuk
penelusuran.
-
includedTypes/excludedTypes, includedPrimaryTypes/excludedPrimaryTypes
Memungkinkan Anda menentukan daftar jenis dari jenis Tabel A yang digunakan untuk memfilter hasil penelusuran. Maksimal 50 jenis dapat ditentukan dalam setiap kategori pembatasan jenis.
Tempat hanya dapat memiliki satu jenis utama dari jenis Tabel A yang terkait dengan tempat tersebut. Misalnya, jenis utama mungkin
"mexican_restaurant"atau"steak_house". GunakanincludedPrimaryTypesdanexcludedPrimaryTypesuntuk memfilter hasil berdasarkan jenis utama suatu tempat.Tempat juga dapat memiliki beberapa nilai jenis dari jenis Tabel A yang terkait dengannya. Misalnya, restoran mungkin memiliki jenis berikut:
"seafood_restaurant","restaurant","food","point_of_interest","establishment". GunakanincludedTypesdanexcludedTypesuntuk memfilter hasil pada daftar jenis yang terkait dengan suatu tempat.Saat Anda menentukan jenis utama umum, seperti
"restaurant"atau"hotel", respons dapat berisi tempat dengan jenis utama yang lebih spesifik daripada yang ditentukan. Misalnya, Anda menentukan untuk menyertakan jenis utama"restaurant". Respons kemudian dapat berisi tempat dengan jenis utama"restaurant", tetapi respons juga dapat berisi tempat dengan jenis utama yang lebih spesifik, seperti"chinese_restaurant"atau"seafood_restaurant".Jika penelusuran ditentukan dengan beberapa batasan jenis, hanya tempat yang memenuhi semua batasan yang akan ditampilkan. Misalnya, jika Anda menentukan
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}, tempat yang ditampilkan menyediakan layanan terkait"restaurant", tetapi tidak beroperasi terutama sebagai"steak_house".includedTypes
Daftar jenis tempat dari Tabel A yang akan ditelusuri. Jika parameter ini tidak disertakan, tempat dari semua jenis akan ditampilkan.
excludedTypes
Daftar jenis tempat dari Tabel A yang akan dikecualikan dari penelusuran.
Jika Anda menentukan
includedTypes(seperti"school") danexcludedTypes(seperti"primary_school") dalam permintaan, respons akan menyertakan tempat yang dikategorikan sebagai"school", tetapi bukan sebagai"primary_school". Respons mencakup tempat yang cocok dengan setidaknya satu dariincludedTypesdan tidak ada dariexcludedTypes.Jika ada jenis yang bertentangan, seperti jenis yang muncul di
includedTypesdanexcludedTypes, errorINVALID_REQUESTakan ditampilkan.includedPrimaryTypes
Daftar jenis tempat utama dari Tabel A untuk disertakan dalam penelusuran.
excludedPrimaryTypes
Daftar jenis tempat utama dari Tabel A yang akan dikecualikan dari penelusuran.
Jika ada jenis utama yang bertentangan, seperti jenis yang muncul di
includedPrimaryTypesdanexcludedPrimaryTypes, errorINVALID_ARGUMENTakan ditampilkan. -
maxResultCount
Menentukan jumlah maksimum hasil tempat yang akan ditampilkan. Harus antara 1 dan 20 (default) inklusif.
-
rankPreference
Jenis peringkat yang akan digunakan. Jika parameter ini tidak ada, hasil akan diberi peringkat berdasarkan popularitas. Dapat berupa salah satu dari berikut ini:
.popularity(default) Mengurutkan hasil berdasarkan popularitasnya..distanceMengurutkan hasil dalam urutan menaik berdasarkan jaraknya dari lokasi yang ditentukan.
-
regionCode
Kode wilayah yang digunakan untuk memformat respons, ditentukan sebagai nilai kode CLDR dua karakter. Tidak ada nilai default.
Jika nama negara di kolom
formattedAddressdalam respons cocok denganregionCode, kode negara akan dihilangkan dariformattedAddress. Parameter ini tidak berpengaruh padaadrFormatAddress, yang selalu menyertakan nama negara, atau padashortFormattedAddress, yang tidak pernah menyertakannya.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 dapat memengaruhi hasil berdasarkan hukum yang berlaku.
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
objek GMSPlaceReview. 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.