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