คำขอการค้นหาด้วย Nearby (ใหม่) ใช้เป็นการป้อนข้อมูลภูมิภาคที่จะค้นหา
ระบุเป็นวงกลม โดยกำหนดโดยพิกัดละติจูดและลองจิจูดของจุดศูนย์กลางของ
วงกลมและรัศมีเป็นเมตร คำขอจะแสดงรายชื่อสถานที่ที่ตรงกัน โดยแต่ละสถานที่แสดงด้วย
GMSPlace
ภายในพื้นที่การค้นหาที่ระบุ
โดยค่าเริ่มต้น คำตอบจะมีสถานที่ทุกประเภทภายในพื้นที่ที่ค้นหา คุณสามารถเลือก กรองการตอบกลับโดยระบุรายการประเภทสถานที่ที่จะรวมไว้ในหรือยกเว้นอย่างชัดแจ้ง คำตอบ ตัวอย่างเช่น คุณสามารถระบุให้รวมเฉพาะตำแหน่งเหล่านั้นไว้ในคำตอบโดยระบุประเภท "ร้านอาหาร" "เบเกอรี่" และ "คาเฟ่" หรือยกเว้นสถานที่ทั้งหมดในประเภท "โรงเรียน"
คำขอการค้นหาใกล้เคียง (ใหม่)
ส่งคำขอการค้นหาด้วย Nearby ด้วยการโทร
GMSPlacesClient searchNearbyWithRequest:
การส่งผ่าน
GMSPlaceSearchNearbyRequest
ออบเจ็กต์ที่กำหนดพารามิเตอร์คำขอและเมธอด Callback ประเภท
GMSPlaceSearchNearbyResultCallback
,
ในการจัดการกับคำตอบ
ออบเจ็กต์ GMSPlaceSearchNearbyRequest
ระบุ
ต้องระบุและไม่บังคับ
พารามิเตอร์สำหรับคำขอ พารามิเตอร์ที่จำเป็น ได้แก่
- รายการช่องที่จะแสดงผลในออบเจ็กต์
GMSPlace
หรือที่เรียกว่า ฟิลด์มาสก์ ตามที่กำหนดโดยGMSPlaceProperty
หากไม่ได้ระบุอย่างน้อย 1 ช่องในรายการช่อง หรือไม่ได้ระบุ รายการช่อง การเรียกจะแสดงข้อผิดพลาด - ข้อจำกัดตำแหน่ง หมายถึงวงกลมที่กำหนดพื้นที่ค้นหา
ตัวอย่างคำขอค้นหาใกล้เคียงนี้ระบุว่าออบเจ็กต์ GMSPlace
ของการตอบกลับ
มีชื่อสถานที่ (GMSPlacePropertyName
) และพิกัดของสถานที่
(GMSPlacePropertyCoordinate
) สำหรับออบเจ็กต์ GMSPlace
แต่ละรายการในการค้นหา
ผลลัพธ์ ยังกรองการตอบสนองต่อที่แสดงสถานที่ประเภท "ร้านอาหาร" เท่านั้นด้วย และ "คาเฟ่"
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; } } ];
GooglePlacesSwift
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 }
การตอบกลับของการค้นหาในบริเวณใกล้เคียง
Nearby Search API แสดงผลอาร์เรย์ของรายการที่ตรงกันในรูปแบบของGMSPlace
ด้วยออบเจ็กต์ GMSPlace
1 รายการต่อตำแหน่งที่ตรงกัน
รับสถานะเปิด
ออบเจ็กต์ GMSPlacesClient
มีฟังก์ชันสมาชิกชื่อ isOpenWithRequest
(isOpenRequest
ใน Swift และ isPlaceOpenRequest
ใน GooglePlacesSwift) ที่แสดงคำตอบซึ่งระบุว่าสถานที่ดังกล่าวเปิดอยู่ในขณะนี้หรือไม่ โดยอิงตามเวลาที่ระบุในการโทร
เมธอดนี้ใช้อาร์กิวเมนต์เดียวประเภท GMSPlaceIsOpenWithRequest
ที่มี:
- ออบเจ็กต์
GMSPlace
หรือสตริงที่ระบุรหัสสถานที่ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างออบเจ็กต์สถานที่โดยมีช่องที่จำเป็น โปรดดูรายละเอียดสถานที่
- ออบเจ็กต์
NSDate
(Obj-C) หรือDate
(Swift) ที่ไม่บังคับระบุเวลาที่คุณต้องการตรวจสอบ หากไม่ได้ระบุเวลา จะใช้ค่าเริ่มต้นตอนนี้ - เมธอด
GMSPlaceOpenStatusResponseCallback
เพื่อจัดการคำตอบ
เมธอด GMSPlaceIsOpenWithRequest
กำหนดให้ต้องตั้งค่าช่องต่อไปนี้ในออบเจ็กต์ GMSPlace
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
หากไม่มีการระบุช่องเหล่านี้ในออบเจ็กต์สถานที่หรือส่งรหัสสถานที่ เมธอดจะใช้ GMSPlacesClient GMSFetchPlaceRequest:
เพื่อดึงข้อมูล
การตอบกลับ isOpenWithRequest
รายการ
isOpenWithRequest
แสดงผลออบเจ็กต์ GMSPlaceIsOpenResponse
ที่มีค่าบูลีนชื่อ status
ซึ่งระบุว่าธุรกิจเปิดทำการ ปิดทำการ หรือไม่ทราบสถานะ
ภาษา | ค่าหากเปิดอยู่ | ค่าหากปิด | ค่าหากไม่ทราบสถานะ |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (เวอร์ชันตัวอย่าง) | true |
false |
nil |
การเรียกเก็บเงินสำหรับ isOpenWithRequest
- มีการเรียกเก็บเงินสำหรับช่อง
GMSPlacePropertyUTCOffsetMinutes
และGMSPlacePropertyBusinessStatus
ภายใต้ SKU ข้อมูลพื้นฐาน ส่วนเวลาทำการที่เหลือจะเรียกเก็บตาม SKU ของรายละเอียดสถานที่ (ขั้นสูง) - หากออบเจ็กต์
GMSPlace
ของคุณมีช่องเหล่านี้จากคำขอก่อนหน้าอยู่แล้ว ระบบจะไม่เรียกเก็บเงินจากคุณอีก
ตัวอย่าง: ส่งคำขอGMSPlaceIsOpenWithRequest
ตัวอย่างต่อไปนี้แสดงวิธีเริ่มต้น GMSPlaceIsOpenWithRequest
ภายในออบเจ็กต์ GMSPlace
ที่มีอยู่
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 }
พารามิเตอร์ที่จำเป็น
ใช้ออบเจ็กต์ GMSPlaceSearchNearbyRequest
เพื่อระบุพารามิเตอร์ที่จำเป็นสำหรับ
การค้นหา
-
รายการช่อง
เมื่อคุณขอรายละเอียดสถานที่ คุณต้องระบุข้อมูลที่จะ แสดงผลในออบเจ็กต์
GMSPlace
สำหรับสถานที่เป็นมาสก์ของช่อง หากต้องการนิยาม ฟิลด์มาสก์ ให้ส่งอาร์เรย์ของค่าจากGMSPlaceProperty
ไปยังออบเจ็กต์GMSPlaceSearchNearbyRequest
การมาสก์ช่องเป็นแนวทางปฏิบัติในการออกแบบที่ดีเพื่อให้แน่ใจว่าคุณไม่ได้ขอข้อมูลที่ไม่จำเป็น ซึ่งช่วยหลีกเลี่ยงเวลาประมวลผลและการเรียกเก็บเงินที่ไม่จำเป็นระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง
ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU การค้นหาใกล้เคียง (พื้นฐาน):
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyCoordinate
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyName
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
GMSPlacePropertyPhotos
,GMSPlacePropertyPlaceID
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,GMSPlacePropertyWheelchairAccessibleEntrance
ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU ของการแชร์ใกล้เคียง (ขั้นสูง):
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU การค้นหาใกล้เคียง (ที่ต้องการ):
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
ตัวอย่างต่อไปนี้ส่งผ่านรายการ ค่าของช่อง เพื่อระบุว่าออบเจ็กต์
GMSPlace
ที่แสดงผลตามคำขอประกอบด้วย ช่องname
และ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];
GooglePlacesSwift
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
-
locationRestriction
GMSPlaceLocationRestriction
กำหนดพื้นที่ที่จะค้นหา ซึ่งระบุเป็นวงกลม กำหนดด้วยจุดศูนย์กลางและ รัศมีเป็นเมตร รัศมีต้องอยู่ระหว่าง 0.0 ถึง 50000.0 รัศมีเริ่มต้นคือ 0.0 คุณต้องตั้งค่าในคำขอให้เป็นค่าที่มากกว่า 0.0
พารามิเตอร์ที่ไม่บังคับ
ใช้ออบเจ็กต์ GMSPlaceSearchNearbyRequest
เพื่อระบุพารามิเตอร์ที่ไม่บังคับสำหรับ
การค้นหา
-
includeTypes/excludedTypes, includePrimaryTypes/excludedPrimaryTypes
ให้คุณระบุรายการประเภทจากประเภท ใช้ตาราง A เพื่อกรอง ผลการค้นหา หมวดหมู่ข้อจำกัดแต่ละประเภทระบุได้สูงสุด 50 ประเภท
สถานที่มีประเภทหลักได้เพียงประเภทเดียวจากประเภท ตาราง A ที่เชื่อมโยงกับ ได้ ตัวอย่างเช่น ประเภทหลักอาจเป็น
"mexican_restaurant"
หรือ"steak_house"
ใช้includedPrimaryTypes
และexcludedPrimaryTypes
เพื่อกรองผลลัพธ์ ประเภทหลักของสถานที่สถานที่แห่งหนึ่งสามารถมีค่าหลายค่าจากประเภทได้ ตาราง ก ที่เกี่ยวข้อง ตัวอย่างเช่น ร้านอาหารอาจมีประเภทต่อไปนี้
"seafood_restaurant"
"restaurant"
"food"
"point_of_interest"
,"establishment"
ใช้includedTypes
และexcludedTypes
เพื่อกรองผลลัพธ์ในรายการประเภทที่เชื่อมโยงกับ สถานที่เมื่อคุณระบุประเภทหลักทั่วไป เช่น
"restaurant"
หรือ"hotel"
คำตอบอาจมีสถานที่ที่มีประเภทหลักที่เฉพาะเจาะจงมากกว่า อันที่ระบุไว้ ตัวอย่างเช่น คุณกำหนดให้รวมประเภทหลัก"restaurant"
คำตอบสามารถประกอบด้วยสถานที่ที่มีประเภทหลักเป็น"restaurant"
แต่การตอบกลับอาจมีสถานที่ที่มีความเฉพาะเจาะจงมากขึ้น ประเภทหลัก เช่น"chinese_restaurant"
หรือ"seafood_restaurant"
หากระบุการค้นหาโดยมีข้อจำกัดหลายประเภท เฉพาะสถานที่ ที่เป็นไปตามข้อจำกัดทั้งหมดจะแสดงผล เช่น หากระบุ
{"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]}
สถานที่ที่ส่งคืนให้บริการที่เกี่ยวข้องกับ"restaurant"
แต่ไม่ได้ดำเนินการเป็นหลัก ในฐานะ"steak_house"
includedTypes
รายการประเภทสถานที่จาก ตาราง A ที่จะค้นหา หากละเว้นพารามิเตอร์นี้ ระบบจะแสดงผลตำแหน่งทุกประเภท
excludedTypes
รายการประเภทสถานที่จาก ตาราง A ที่จะยกเว้นจาก ค้นหา
หากคุณระบุทั้ง
includedTypes
(เช่น"school"
) และพารามิเตอร์excludedTypes
(เช่น"primary_school"
) ในคำขอ ค่า คำตอบรวมสถานที่ที่ได้รับการจัดหมวดหมู่เป็น"school"
แต่ไม่ได้เป็น"primary_school"
คำตอบมีสถานที่ที่ตรงกับอย่างน้อย 1 แห่งincludedTypes
และ ไม่มี ของexcludedTypes
หากมีประเภทที่ขัดแย้งกัน เช่น ประเภทหนึ่งๆ ที่ปรากฏในทั้ง
includedTypes
และexcludedTypes
ระบบจะแสดงข้อผิดพลาดINVALID_REQUEST
includedPrimaryTypes
รายการประเภทสถานที่หลักจาก ตาราง A ที่จะรวม ในการค้นหา
excludedPrimaryTypes
รายการประเภทสถานที่หลักจาก ตาราง A ที่จะยกเว้น จากการค้นหา
หากมีประเภทหลักที่ขัดแย้งกัน เช่น ประเภทหนึ่งๆ ที่ปรากฏในทั้งสองประเภท
includedPrimaryTypes
และexcludedPrimaryTypes
ระบบแสดงผลข้อผิดพลาดINVALID_ARGUMENT
รายการ -
maxResultCount
ระบุจำนวนสูงสุดของผลลัพธ์สถานที่ที่จะแสดง ต้องอยู่ระหว่าง 1 และ 20 (ค่าเริ่มต้น)
-
rankPreference
ประเภทของการจัดอันดับที่จะใช้ หากไม่ระบุพารามิเตอร์นี้ ผลลัพธ์จะจัดอันดับตามความนิยม อาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้
.popularity
(ค่าเริ่มต้น) จัดเรียงผลการค้นหาตามความนิยม.distance
จัดเรียงผลการค้นหาตามลำดับจากน้อยไปหามากตามระยะห่างจาก ตำแหน่งที่ระบุ
-
regionCode
รหัสภูมิภาคที่ใช้ในการจัดรูปแบบการตอบกลับ ระบุเป็น ค่ารหัส CLDR แบบ 2 อักขระ ไม่มีค่าเริ่มต้น
หากชื่อประเทศของช่อง
formattedAddress
ในคำตอบตรงกับregionCode
, รหัสประเทศไม่รวมอยู่ในformattedAddress
พารามิเตอร์นี้ไม่มีผลต่อadrFormatAddress
ซึ่งจะรวมประเทศเสมอ หรือในshortFormattedAddress
ซึ่งจะไม่รวมอยู่ด้วยรหัส CLDR ส่วนใหญ่เหมือนกันกับ รหัส ISO 3166-1 โดยมีข้อยกเว้นบางประการเด่นๆ ตัวอย่างเช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ในขณะที่รหัส ISO 3166-1 คือ "gb" (โดยทางเทคนิคสำหรับ นิติบุคคล "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง
แสดงการระบุแหล่งที่มาในแอปของคุณ
เมื่อแอปแสดงข้อมูลที่ได้จาก
GMSPlacesClient
เช่น รูปภาพและรีวิว แอปต้องแสดงการระบุแหล่งที่มาที่จำเป็นด้วย
เช่น พร็อพเพอร์ตี้ reviews
ของออบเจ็กต์ GMSPlacesClient
มีอาร์เรย์สูงสุด 5 รายการ
GMSPlaceReview
ออบเจ็กต์ ออบเจ็กต์ GMSPlaceReview
แต่ละรายการมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียนได้
หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือผู้เขียนด้วย
การระบุแหล่งที่มา
สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบที่ การระบุแหล่งที่มา