Places SDK สำหรับ iOS (ใหม่) ให้ข้อมูลที่หลากหลายเกี่ยวกับสถานที่แก่แอปของคุณ ซึ่งรวมถึงชื่อและที่อยู่ของสถานที่ ตำแหน่งทางภูมิศาสตร์ ที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทของสถานที่ (เช่น ไนต์คลับ ร้านขายสัตว์เลี้ยง พิพิธภัณฑ์) และอื่นๆ หากต้องการเข้าถึงข้อมูลนี้สำหรับ สถานที่ที่เฉพาะเจาะจง คุณสามารถใช้รหัสสถานที่ ซึ่งเป็นตัวระบุที่เสถียรซึ่งระบุ สถานที่ที่ไม่ซ้ำกัน
รับรายละเอียดสถานที่
คลาส
GMSPlace
มีข้อมูลเกี่ยวกับสถานที่ที่เฉพาะเจาะจง รวมถึงฟิลด์ข้อมูลทั้งหมดที่แสดงใน
ฟิลด์ข้อมูลสถานที่ (ใหม่) รับออบเจ็กต์
GMSPlace
โดยการเรียกใช้
GMSPlacesClient
fetchPlaceWithRequest:
ส่งผ่านออบเจ็กต์ GMSFetchPlaceRequest และ
เมธอดเรียกกลับประเภท
GMSPlaceResultCallback
ออบเจ็กต์ GMSFetchPlaceRequest จะระบุข้อมูลต่อไปนี้
- (ต้องระบุ) รหัสสถานที่ ซึ่งเป็นตัวระบุที่ไม่ซ้ำสำหรับสถานที่ในฐานข้อมูล Google Places และใน Google Maps
- (ต้องระบุ) รายการฟิลด์ที่จะแสดงในออบเจ็กต์
GMSPlaceหรือที่เรียกว่ามาสก์ฟิลด์ตามที่กำหนดโดยGMSPlacePropertyหากคุณไม่ได้ระบุฟิลด์อย่างน้อย 1 รายการในรายการฟิลด์ หรือหากคุณละเว้น รายการฟิลด์ การเรียกจะแสดงข้อผิดพลาด - (ไม่บังคับ) รหัสภูมิภาคที่ใช้จัดรูปแบบการตอบกลับ
- (ไม่บังคับ) โทเค็นเซสชันที่ใช้เพื่อสิ้นสุดเซสชันการเติมข้อความอัตโนมัติ (ใหม่)
ส่งคำขอรายละเอียดสถานที่
ตัวอย่างนี้รับสถานที่ตามรหัสโดยส่งพารามิเตอร์ต่อไปนี้
- รหัสสถานที่ของ
ChIJV4k8_9UodTERU5KXbkYpSYs - รายการฟิลด์ที่ระบุให้แสดงชื่อสถานที่และ URL ของเว็บไซต์
GMSPlaceResultCallbackเพื่อจัดการผลลัพธ์
API จะเรียกใช้เมธอด Callback ที่ระบุ โดยส่งออบเจ็กต์
GMSPlace
หากไม่พบสถานที่ ออบเจ็กต์สถานที่จะเป็น nil
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); } }];
การตอบกลับรายละเอียดสถานที่
รายละเอียดสถานที่แสดงออบเจ็กต์
GMSPlace ที่มีรายละเอียดเกี่ยวกับสถานที่ เฉพาะช่องที่ระบุในรายการช่องเท่านั้นที่จะได้รับการป้อนข้อมูลในออบเจ็กต์ GMSPlace
รับสถานะเปิด
ออบเจ็กต์ GMSPlacesClient มีฟังก์ชันสมาชิกที่ชื่อ isOpenWithRequest (isOpenRequest ใน Swift และ isPlaceOpenRequest ใน GooglePlacesSwift) ซึ่งจะแสดงการตอบกลับที่ระบุว่าสถานที่เปิดอยู่หรือไม่ในขณะนั้น โดยอิงตามเวลาที่ระบุในการเรียก
เมธอดนี้รับอาร์กิวเมนต์เดียวประเภท GMSPlaceIsOpenWithRequest ซึ่งมีข้อมูลต่อไปนี้
- ออบเจ็กต์
GMSPlaceหรือสตริงที่ระบุรหัสสถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างออบเจ็กต์ Place ที่มีฟิลด์ที่จำเป็นได้ที่รายละเอียดสถานที่
- ออบเจ็กต์
NSDate(Obj-C) หรือDate(Swift) ที่ไม่บังคับซึ่งระบุเวลาที่คุณต้องการตรวจสอบ หากไม่ได้ระบุเวลา ค่าเริ่มต้นจะเป็นเวลาปัจจุบัน GMSPlaceOpenStatusResponseCallbackวิธีจัดการการตอบกลับ >
เมธอด GMSPlaceIsOpenWithRequest ต้องตั้งค่าฟิลด์ต่อไปนี้ในออบเจ็กต์ GMSPlace
GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatusGMSPlacePropertyOpeningHoursGMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHours
หากไม่ได้ระบุช่องเหล่านี้ในออบเจ็กต์สถานที่ หรือหากคุณส่งรหัสสถานที่ เมธอดจะใช้ GMSPlacesClient GMSFetchPlaceRequest: เพื่อดึงข้อมูล
การตอบกลับ isOpenWithRequest รายการ
isOpenWithRequest จะแสดงออบเจ็กต์ GMSPlaceIsOpenResponse ที่มีค่าบูลีนชื่อ status ซึ่งระบุว่าธุรกิจเปิด ปิด หรือไม่ทราบสถานะ
| ภาษา | มูลค่าหากเปิด | มูลค่าหากปิด | ค่าหากไม่ทราบสถานะ |
|---|---|---|---|
| Places Swift | true |
false |
nil |
| Swift | .open |
.closed |
.unknown |
| Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
การเรียกเก็บเงินสำหรับ isOpenWithRequest
- ระบบจะเรียกเก็บเงินฟิลด์
GMSPlacePropertyUTCOffsetMinutesและGMSPlacePropertyBusinessStatusภายใต้ SKU ข้อมูลพื้นฐาน ส่วนเวลาเปิดทำการที่เหลือจะมีการเรียกเก็บเงินภายใต้ SKU ของรายละเอียดสถานที่สำหรับองค์กร - หาก
GMSPlaceออบเจ็กต์มีฟิลด์เหล่านี้อยู่แล้วจากคำขอก่อนหน้า ระบบจะไม่เรียกเก็บเงินจากคุณอีก
ตัวอย่าง: ส่งGMSPlaceIsOpenWithRequestคำขอ
ตัวอย่างต่อไปนี้แสดงวิธีเริ่มต้น GMSPlaceIsOpenWithRequest ภายในออบเจ็กต์ GMSPlace ที่มีอยู่
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 } }];
พารามิเตอร์ที่จำเป็น
ใช้ออบเจ็กต์ GMSFetchPlaceRequest เพื่อระบุพารามิเตอร์ที่จำเป็น
รหัสสถานที่
รหัสสถานที่ที่ใช้ใน Places SDK สำหรับ iOS เป็นตัวระบุเดียวกันกับที่ใช้ใน Places API, Places SDK สำหรับ Android และ Google API อื่นๆ รหัสสถานที่แต่ละรหัสจะอ้างอิงได้เพียงสถานที่เดียว แต่สถานที่เดียวอาจมีรหัสสถานที่มากกว่า 1 รหัส
มีบางกรณีที่อาจทำให้สถานที่ได้รับรหัสสถานที่ใหม่ เช่น กรณีที่ธุรกิจย้ายไปสถานที่ใหม่
เมื่อขอสถานที่โดยระบุรหัสสถานที่ คุณจะมั่นใจได้ว่า จะได้รับสถานที่เดียวกันในคำตอบเสมอ (หากสถานที่นั้นยัง มีอยู่) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ซึ่ง แตกต่างจากรหัสในคำขอของคุณ
รายการฟิลด์
เมื่อขอรายละเอียดสถานที่ คุณต้องระบุข้อมูลที่จะ
แสดงในออบเจ็กต์ GMSPlace สำหรับสถานที่นั้นเป็นมาสก์ฟิลด์ หากต้องการกำหนดมาสก์ฟิลด์
ให้ส่งอาร์เรย์ของค่าจาก
GMSPlaceProperty
ไปยังออบเจ็กต์ GMSFetchPlaceRequest
การมาสก์ฟิลด์เป็นแนวทางปฏิบัติในการออกแบบที่ดีเพื่อให้แน่ใจว่าคุณจะไม่ขอข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาในการประมวลผลและการเรียกเก็บเงินที่ไม่จำเป็น
ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง
ฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details Essentials ID Only SKU
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotosฟิลด์ต่อไปนี้จะทริกเกอร์ SKU ของรายละเอียดสถานที่ที่จำเป็น
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewportฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details Pro SKU
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntranceฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details Pro SKU
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteฟิลด์ต่อไปนี้จะทริกเกอร์ SKU ของรายละเอียดสถานที่สำหรับองค์กร
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
ตัวอย่างต่อไปนี้ส่งรายการค่าฟิลด์ 2 รายการ
เพื่อระบุว่าออบเจ็กต์ GMSPlace ที่คำขอส่งคืนมีฟิลด์ name และ 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];
พารามิเตอร์ที่ไม่บังคับ
ใช้ออบเจ็กต์ GMSFetchPlaceRequest เพื่อระบุพารามิเตอร์ที่ไม่บังคับ
regionCode
รหัสภูมิภาคที่ใช้จัดรูปแบบการตอบกลับ โดยระบุเป็นค่า รหัส CLDR 2 อักขระ พารามิเตอร์นี้อาจส่งผลต่อความเอนเอียงของผลการค้นหาด้วย ไม่มีค่าเริ่มต้น
หากชื่อประเทศของช่องที่อยู่ในคำตอบตรงกับรหัสภูมิภาค ระบบจะละเว้นรหัสประเทศจากที่อยู่
รหัส CLDR ส่วนใหญ่จะเหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นที่สำคัญบางประการ ตัวอย่างเช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ขณะที่รหัส ISO 3166-1 คือ "gb" (ในทางเทคนิคสำหรับ นิติบุคคลของ "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์นี้อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง
sessionToken
โทเค็นเซสชันคือสตริงที่ผู้ใช้สร้างขึ้นซึ่งติดตามการเรียก Autocomplete (New) เป็น "เซสชัน" การเติมข้อความอัตโนมัติ (ใหม่) ใช้โทเค็นเซสชันเพื่อจัดกลุ่มคำค้นหาและวางเฟสการเลือกของการค้นหาการเติมข้อความอัตโนมัติของผู้ใช้ลงในเซสชันที่ไม่ต่อเนื่องเพื่อวัตถุประสงค์ในการเรียกเก็บเงิน ระบบจะส่งโทเค็นเซสชันไปยังการเรียกรายละเอียดสถานที่ (ใหม่) ที่ตามมาหลังการเรียกการเติมข้อความอัตโนมัติ (ใหม่) ดูข้อมูลเพิ่มเติมได้ที่ โทเค็นเซสชัน
แสดงการระบุแหล่งที่มาในแอป
เมื่อแอปแสดงข้อมูลที่ได้จาก
GMSPlacesClient
เช่น รูปภาพและรีวิว แอปจะต้องแสดงการระบุแหล่งที่มาที่จำเป็นด้วย
เช่น พร็อพเพอร์ตี้ reviews ของออบเจ็กต์ GMSPlacesClient
มีอาร์เรย์ของออบเจ็กต์ GMSPlaceReview
ได้สูงสุด 5 รายการ ออบเจ็กต์ GMSPlaceReview แต่ละรายการอาจมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียน
หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือการระบุแหล่งที่มาของผู้เขียนด้วย
ดูข้อมูลเพิ่มเติมได้ในเอกสารเกี่ยวกับการระบุแหล่งที่มา