คำขอการค้นหาด้วย 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 รายการต่อตำแหน่งที่ตรงกัน
พร้อมด้วยฟิลด์ข้อมูล ออบเจ็กต์ GMSPlace
ใน
การตอบกลับจะมีฟังก์ชันสำหรับสมาชิกดังต่อไปนี้
-
isOpen
คำนวณว่าสถานที่นั้นๆ เปิดในเวลาที่ระบุหรือไม่ isOpenAtDate
คำนวณว่าสถานที่นั้นๆ เปิดในวันที่ที่ระบุหรือไม่
พารามิเตอร์ที่จำเป็น
ใช้ออบเจ็กต์ 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
แต่ละรายการมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียนได้
หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือผู้เขียนด้วย
การระบุแหล่งที่มา
สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบที่ การระบุแหล่งที่มา