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 รายการซึ่งระบุประเภทข้อมูลที่จะแสดงผล- โทเค็นเซสชันหากมีการเรียกเพื่อสรุปข้อความค้นหาที่เติมข้อความอัตโนมัติ ไม่เช่นนั้น ให้ผ่าน
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 แห่งอาจมีรหัสสถานที่มากกว่า 1 แห่ง
ในบางสถานการณ์อาจทําให้สถานที่รับรหัสสถานที่ใหม่ ตัวอย่างเช่น กรณีนี้อาจเกิดขึ้นได้หากธุรกิจย้ายไปยังสถานที่ตั้งใหม่
เมื่อคุณร้องขอสถานที่โดยการระบุรหัสสถานที่ คุณจะมั่นใจได้ว่าคุณจะได้รับสถานที่เดียวกันในคําตอบเสมอ (หากสถานที่ดังกล่าวยังคงอยู่) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ที่แตกต่างจากรหัสในคําขอ
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมรหัสสถานที่