Places SDK สำหรับ iOS จะให้ข้อมูลที่สมบูรณ์เกี่ยวกับสถานที่ต่างๆ แก่แอปของคุณ ซึ่งรวมถึงชื่อและที่อยู่ของสถานที่ ตำแหน่งทางภูมิศาสตร์ที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทสถานที่ (เช่น ไนท์คลับ ร้านสัตว์เลี้ยง พิพิธภัณฑ์) และอื่นๆ หากต้องการเข้าถึงข้อมูลนี้สำหรับสถานที่หนึ่งๆ คุณสามารถใช้รหัสสถานที่ ซึ่งเป็นตัวระบุแบบคงที่ที่ใช้ระบุสถานที่ได้แบบไม่ซ้ำกัน
รายละเอียดสถานที่
ชั้นเรียน GMSPlace
ให้ข้อมูลเกี่ยวกับสถานที่ที่เจาะจง คุณรับออบเจ็กต์ GMSPlace
ได้ด้วยวิธีต่อไปนี้
- โทร
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
ดูคำแนะนำในการรับข้อมูลสถานที่ปัจจุบัน - โทร
GMSPlacesClient fetchPlaceFromPlaceID:
ส่งผ่านGMSPlaceField
, รหัสสถานที่ และวิธีเรียกกลับ สำหรับคำขอรายละเอียดสถานที่ หากคุณไม่ได้ระบุช่องอย่างน้อย 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
จะเป็นค่าว่างcurrentOpeningHours
และ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
อย่างน้อย 1 รายการโดยระบุประเภทข้อมูลที่จะแสดงผล- โทเค็นของเซสชัน หากมีการเรียกใช้เพื่อสรุปคำค้นหาที่เติมข้อความอัตโนมัติ หรือไม่เช่นนั้นให้ป้อน nil
GMSPlaceResultCallback
เพื่อจัดการผลลัพธ์
API จะเรียกใช้เมธอดโค้ดเรียกกลับที่ระบุ ส่งผ่านในออบเจ็กต์ GMSPlace
หากไม่พบสถานที่ ออบเจ็กต์สถานที่จะเป็น nil
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 รหัส
มีบางกรณีที่อาจทำให้สถานที่ได้รับรหัสสถานที่ใหม่ เช่น กรณีนี้อาจเกิดขึ้นหากธุรกิจย้ายไปยังสถานที่ตั้งแห่งใหม่
เมื่อคุณขอสถานที่ด้วยการระบุรหัสสถานที่ คุณจะมั่นใจได้ว่าจะได้รับสถานที่เดียวกันในการตอบกลับเสมอ (หากสถานที่นั้นยังคงอยู่) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่แตกต่างจากในคำขอ
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมรหัสสถานที่