Places SDK สำหรับ iOS จะให้ข้อมูลที่หลากหลายเกี่ยวกับสถานที่แก่แอปของคุณ ซึ่งรวมถึงชื่อและที่อยู่ของสถานที่ ตำแหน่งทางภูมิศาสตร์ ที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทของสถานที่ (เช่น ไนต์คลับ ร้านขายสัตว์เลี้ยง พิพิธภัณฑ์) และอื่นๆ หากต้องการเข้าถึงข้อมูลนี้สำหรับ สถานที่ที่เฉพาะเจาะจง คุณสามารถใช้รหัสสถานที่ ซึ่งเป็นตัวระบุที่เสถียรซึ่งระบุ สถานที่ที่ไม่ซ้ำกัน
รายละเอียดสถานที่
คลาส
GMSPlace
ให้ข้อมูลเกี่ยวกับสถานที่ที่เฉพาะเจาะจง คุณสามารถรับออบเจ็กต์
GMSPlace
ได้ด้วยวิธีต่อไปนี้
- โทร
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
ดูคำแนะนำเกี่ยวกับการรับสถานที่ปัจจุบัน - เรียกใช้
GMSPlacesClient fetchPlaceFromPlaceID:
โดยส่งGMSPlaceField
, รหัสสถานที่ และเมธอด Callback สำหรับคำขอรายละเอียดสถานที่ หากคุณไม่ได้ ระบุฟิลด์อย่างน้อย 1 รายการในคำขอ หรือหากคุณละเว้นพารามิเตอร์fields
จากคำขอ ระบบจะแสดงฟิลด์ที่เป็นไปได้ทั้งหมด และคุณ จะถูกเรียกเก็บเงินตามนั้น ดูคำแนะนำเกี่ยวกับการรับสถานที่ตามรหัส
เมื่อขอสถานที่ คุณต้องระบุประเภทข้อมูลสถานที่ที่จะแสดง
โดยส่ง GMSPlaceField
พร้อมระบุประเภทข้อมูลที่จะแสดงผล นี่เป็นข้อควรพิจารณาที่สำคัญ เนื่องจากจะส่งผลต่อต้นทุนสำหรับคำขอแต่ละรายการ
เนื่องจากผลลัพธ์ข้อมูลสถานที่ต้องไม่ว่างเปล่า ระบบจึงแสดงผลเฉพาะผลลัพธ์สถานที่ที่มีข้อมูล (เช่น หากสถานที่ที่ขอไม่มีรูปภาพ ฟิลด์ photos
จะไม่อยู่ในผลลัพธ์)
ตัวอย่างต่อไปนี้ส่งรายการค่าฟิลด์ 2 รายการ เพื่อระบุข้อมูลที่คำขอส่งคืน
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
ดูข้อมูลเพิ่มเติมเกี่ยวกับ ฟิลด์สถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเรียกเก็บเงินสำหรับคำขอข้อมูลสถานที่ได้ที่การใช้งานและการเรียกเก็บเงิน
คลาส
GMSPlace
อาจมีข้อมูลสถานที่ต่อไปนี้
name
- ชื่อสถานที่editorialSummary
– ระบุคำอธิบายของสถานที่placeID
- ตัวระบุข้อความสำหรับสถานที่ อ่าน เพิ่มเติมเกี่ยวกับรหัสสถานที่ในส่วนอื่นๆ ของหน้านี้coordinate
- สถานที่ตั้งทางภูมิศาสตร์ของสถานที่ ระบุเป็นพิกัดละติจูดและลองจิจูดphoneNumber
- หมายเลขโทรศัพท์ของสถานที่ในรูปแบบ ระหว่างประเทศformattedAddress
- ที่อยู่ที่มนุษย์อ่านได้ของ สถานที่ตั้งนี้โดยส่วนใหญ่แล้วที่อยู่นี้จะเทียบเท่ากับที่อยู่ทางไปรษณีย์ โปรดทราบว่าบางประเทศ เช่น สหราชอาณาจักร ไม่อนุญาตให้เผยแพร่ที่อยู่ไปรษณีย์จริงเนื่องจากข้อจำกัดด้านการอนุญาตให้ใช้สิทธิ
ที่อยู่ที่จัดรูปแบบประกอบด้วยคอมโพเนนต์ที่อยู่อย่างน้อย 1 รายการ เช่น ที่อยู่ "111 8th Avenue, New York, NY" ประกอบด้วยส่วนประกอบต่อไปนี้ "111" (หมายเลขถนน), "8th Avenue" (เส้นทาง), "New York" (เมือง) และ "NY" (รัฐในสหรัฐอเมริกา)
อย่าแยกวิเคราะห์ที่อยู่ที่จัดรูปแบบแล้วโดยใช้โปรแกรม แต่คุณควรใช้ คอมโพเนนต์ของที่อยู่แต่ละรายการ ซึ่งการตอบกลับของ API จะรวมไว้ด้วย นอกเหนือจากฟิลด์ที่อยู่ที่จัดรูปแบบแล้ว
openingHours
- เวลาทำการของสถานที่ (ตามที่แสดงโดยGMSOpeningHours
) โทรหาGMSOpeningHours.weekdayText
เพื่อรับรายการสตริงที่แปลแล้วของเวลาทำการประจำวันสำหรับสัปดาห์ เรียกใช้GMSOpeningHours.Periods
เพื่อแสดงรายการGMSPeriod
ที่มีข้อมูลโดยละเอียดเพิ่มเติม ซึ่งเทียบเท่ากับข้อมูลที่ได้รับจากweekdayText
หมายเหตุ: หากสถานที่เปิดตลอดเวลา ระบบจะแสดงช่วงเวลาเป็น วันอาทิตย์ตอนเที่ยงคืน และcloseEvent
จะเป็นค่า NullcurrentOpeningHours
และsecondaryOpeningHours
- ฟิลด์ที่ใช้การเปลี่ยนแปลงกำหนดการในวันหยุดและชั่วคราวสำหรับสถานที่addressComponents
- อาร์เรย์ของออบเจ็กต์GMSAddressComponent
ที่แสดงถึงคอมโพเนนต์ของ ที่อยู่ของสถานที่ คอมโพเนนต์เหล่านี้มีไว้เพื่อวัตถุประสงค์ในการ ดึงข้อมูลที่มีโครงสร้างเกี่ยวกับที่อยู่ของสถานที่ เช่น ค้นหาเมืองที่สถานที่ตั้งอยู่ อย่าใช้คอมโพเนนต์เหล่านี้ ในการจัดรูปแบบที่อยู่ ให้ใช้พร็อพเพอร์ตี้formattedAddress
แทน ซึ่งจะให้ที่อยู่ที่จัดรูปแบบแล้วในภาษาท้องถิ่นโปรดทราบข้อเท็จจริงต่อไปนี้เกี่ยวกับอาร์เรย์
addressComponents
- อาร์เรย์ของคอมโพเนนต์ที่อยู่อาจมีคอมโพเนนต์มากกว่า
formattedAddress
- อาร์เรย์ไม่จำเป็นต้องรวมหน่วยงานทางการเมืองทั้งหมดที่มีที่อยู่ นอกเหนือจากหน่วยงานที่รวมอยู่ใน
formattedAddress
- เราไม่รับประกันว่ารูปแบบการตอบกลับจะยังคงเหมือนเดิมระหว่างคำขอ
โดยเฉพาะอย่างยิ่ง จำนวน
addressComponents
จะแตกต่างกันไปตามที่อยู่ที่ขอ และอาจเปลี่ยนแปลงเมื่อเวลาผ่านไปสำหรับที่อยู่เดียวกัน คอมโพเนนต์สามารถเปลี่ยนตำแหน่งในอาร์เรย์ได้ ประเภทของคอมโพเนนต์อาจเปลี่ยนแปลงได้ คอมโพเนนต์บางอย่างอาจ หายไปในการตอบกลับในภายหลัง
- อาร์เรย์ของคอมโพเนนต์ที่อยู่อาจมีคอมโพเนนต์มากกว่า
userRatingsTotal
– แสดงจำนวนรีวิวที่ประกอบกันเป็นคะแนนของสถานที่
คลาส
GMSPlace
มีฟังก์ชันสมาชิกต่อไปนี้
-
isOpen
จะคำนวณว่าสถานที่เปิดหรือไม่ในเวลาที่กำหนด โดยอิงตามopeningHours
และUTCOffsetMinutes
รวมถึงวันที่และเวลาปัจจุบัน isOpenAtDate
จะคำนวณว่าสถานที่เปิดทำการในวันที่ระบุหรือไม่ โดยอิงตามopeningHours
และUTCOffsetMinutes
รวมถึงวันที่และเวลาปัจจุบัน
เมื่อใช้ฟังก์ชันเหล่านี้เพื่อดูเวลาและ/หรือวันที่ทำการ คำขอเดิม
fetchPlaceFromPlaceID:
หรือ findPlaceLikelihoodsFromUserLocationWithPlaceFields:
ต้องระบุทั้งฟิลด์ GMSPlaceFieldOpeningHours
และ GMSPlaceFieldUTCOffsetMinutes
หากไม่มีฟิลด์ใดฟิลด์หนึ่ง ออบเจ็กต์ GMSPlace
ที่ได้จะไม่มีเวลาทำการหรือวันที่ และการเรียกจะแสดงผลเป็น
GMSPlaceOpenStatusUnknown
หากต้องการผลลัพธ์ที่แม่นยำ ให้ขอฟิลด์ GMSPlaceFieldBusinessStatus
และ GMSPlaceFieldUTCOffsetMinutes
ในคำขอสถานที่ต้นฉบับ หากไม่ได้ขอ ระบบจะถือว่าธุรกิจ
ดำเนินกิจการอยู่
isOpen
กับรายละเอียดสถานที่ได้ในวิดีโอวิธีดูเวลาทําการ
รับชั่วโมงการทำงานที่ยอดเยี่ยม
แม้ว่าเวลาทำการปกติจะได้รับผ่านopeningHours
, currentOpeningHours
และ secondaryOpeningHours
จะรองรับการเปลี่ยนแปลงกำหนดการในช่วงวันหยุดและกำหนดการชั่วคราว
คุณสามารถกรองและดูเวลาทำการพิเศษสำหรับวันพิเศษเหล่านี้ได้หากมี
Swift
func examineOpeningHours(place: GMSPlace) { // Check if the current opening hours contains a special day that has exceptional hours guard let currentOpeningHours = place.currentOpeningHours else { return } if let specialDays = currentOpeningHours.specialDays { guard !specialDays.isEmpty else { return } if let specialDay = specialDays.filter { $0.isExceptional }.first { // Indicate exceptional hours } } // Check if current opening hours contains a truncated time period let periods = currentOpeningHours.periods if !periods.isEmpty { for period in periods { let open = period.open let close = period.close if let open = open { let date = open.date if open.isTruncated { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available let secondaryOpeningHours = place.secondaryOpeningHours guard let hoursType = secondaryOpeningHours.first?.hoursType else { return } if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
Objective-C
- (void)examineOpeningHours:(GMSPlace *) place { // Check if the current opening hours contains a special day that has exceptional hours GMSOpeningHours *currentOpeningHours = place.currentOpeningHours; if (currentOpeningHours != nil) { NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays; if ([specialDays count] != 0) { for (GMSPlaceSpecialDay *specialDay in specialDays) { NSDate *date = specialDay.date; if ([specialDay isExceptional]) { // Indicate exceptional hours } } } } // Check if current opening hours contains a truncated time period NSArray <GMSPeriod *> * periods = currentOpeningHours.periods; if ([periods count] != 0) { for (GMSPeriod * period in periods) { GMSTimeOfWeek *open = period.open; GMSTimeOfWeek *close = period.close; if (open) { if ([open isTruncated]) { // Indicate truncated time period } } } } // Check if the place's secondary opening hours indicate when delivery is available GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours; GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType; if (hoursType == GMSPlaceHoursTypeDelivery) { // Indicate hours where delivery is available } }
รับสถานที่ตามรหัส
รหัสสถานที่เป็นตัวระบุข้อความที่ระบุสถานที่โดยไม่ซ้ำกัน ใน
Places SDK สำหรับ iOS คุณสามารถดึงข้อมูลรหัสของสถานที่จากออบเจ็กต์
GMSPlace
ได้ คุณจัดเก็บรหัสสถานที่และใช้เพื่อดึงข้อมูลออบเจ็กต์
GMSPlace
อีกครั้งในภายหลังได้
หากต้องการรับสถานที่ตามรหัส ให้เรียกใช้
GMSPlacesClient
fetchPlaceFromPlaceID:
โดยส่งพารามิเตอร์ต่อไปนี้
- สตริงที่มีรหัสสถานที่
GMSPlaceField
s อย่างน้อย 1 รายการที่ระบุประเภทข้อมูลที่จะแสดงผล- โทเค็นเซสชันหากมีการโทรเพื่อสรุปคำค้นหาที่เติมข้อความอัตโนมัติ หรือส่ง nil
GMSPlaceResultCallback
เพื่อจัดการผลลัพธ์
API จะเรียกใช้เมธอด Callback ที่ระบุ โดยส่งออบเจ็กต์
GMSPlace
หากไม่พบสถานที่ ออบเจ็กต์สถานที่จะเป็น nil
Places Swift SDK สำหรับ iOS
// Initialize Places Swift Client. let placesClient = PlacesClient.shared // A hotel in Saigon with an attribution let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Fetch Place Request. let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.displayName] ) Task { switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): print("The selected place is: \(place.displayName): \(String(describing: place.description))") case .failure(let placesError): print("Place not found: \(placeID); \(placesError)") } }
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: { (place: GMSPlace?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let place = place { self.lblName?.text = place.name print("The selected place is: \(place.name)") } })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (place != nil) { NSLog(@"The selected place is: %@", [place name]); } }];
แสดงการระบุแหล่งที่มาในแอป
เมื่อแอปแสดงข้อมูลที่ได้จาก
GMSPlacesClient
lookUpPlaceID:callback:
แอปต้องแสดงการระบุแหล่งที่มาด้วย
ดูเอกสารประกอบเกี่ยวกับการระบุแหล่งที่มา
ข้อมูลเพิ่มเติมเกี่ยวกับรหัสสถานที่
รหัสสถานที่ที่ใช้ใน Places SDK สำหรับ iOS เป็นตัวระบุเดียวกันกับที่ใช้ใน Places API, Places SDK สำหรับ Android และ Google API อื่นๆ
รหัสสถานที่แต่ละรหัสจะอ้างอิงได้เพียงสถานที่เดียว แต่สถานที่เดียวอาจมีรหัสสถานที่มากกว่า 1 รหัส
มีบางกรณีที่อาจทำให้สถานที่ได้รับรหัสสถานที่ใหม่ เช่น กรณีที่ธุรกิจย้ายไปสถานที่ใหม่
เมื่อขอสถานที่โดยระบุรหัสสถานที่ คุณมั่นใจได้ว่า จะได้รับสถานที่เดียวกันในคำตอบเสมอ (หากสถานที่นั้นยังคงมีอยู่) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ที่แตกต่างจากรหัสในคำขอของคุณ
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมรหัสสถานที่