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
– ชื่อสถานที่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
ไม่มีข้อมูลaddressComponents
– อาร์เรย์ของออบเจ็กต์GMSAddressComponent
ที่แสดงคอมโพเนนต์ของที่อยู่สําหรับสถานที่ คอมโพเนนต์เหล่านี้มีไว้เพื่อวัตถุประสงค์ในการแยกข้อมูลที่มีโครงสร้างเกี่ยวกับที่อยู่ของสถานที่ เช่น พบเมืองที่สถานที่ตั้งอยู่ อย่าใช้คอมโพเนนต์เหล่านี้สําหรับการจัดรูปแบบที่อยู่ ให้ใช้พร็อพเพอร์ตี้formattedAddress
ซึ่งมีที่อยู่ในรูปแบบที่แปลแล้วแทนข้อเท็จจริงต่อไปนี้เกี่ยวกับอาร์เรย์
addressComponents
- อาร์เรย์ของคอมโพเนนต์ที่อยู่อาจมีคอมโพเนนต์มากกว่า
formattedAddress
- อาร์เรย์ไม่ได้รวมเอนทิตีทางการเมืองทั้งหมดที่มีที่อยู่ นอกเหนือจากเอนทิตีที่รวมอยู่ใน
formattedAddress
- และไม่รับประกันว่ารูปแบบการตอบกลับจะเหมือนเดิมระหว่างคําขอ โดยเฉพาะอย่างยิ่ง จํานวน
addressComponents
อาจแตกต่างกันไปตามที่อยู่ที่ขอและอาจเปลี่ยนแปลงได้เมื่อเวลาผ่านไปสําหรับที่อยู่เดียวกัน คอมโพเนนต์สามารถเปลี่ยนตําแหน่งในอาร์เรย์ ประเภทของคอมโพเนนต์สามารถเปลี่ยนได้ คอมโพเนนต์ใดอาจหายไปในการตอบสนองในภายหลัง
- อาร์เรย์ของคอมโพเนนต์ที่อยู่อาจมีคอมโพเนนต์มากกว่า
userRatingsTotal
– แสดงจํานวนรีวิวที่ได้รับคะแนนของสถานที่
คลาส GMSPlace
มีฟังก์ชันสมาชิกดังต่อไปนี้
-
isOpen
คํานวณว่าสถานที่นั้นๆ เปิดอยู่ในช่วงเวลาที่กําหนดหรือไม่ โดยอิงตามopeningHours
และUTCOffsetMinutes
รวมถึงวันที่และเวลาปัจจุบัน isOpenAtDate
คํานวณว่าสถานที่เปิดทําการในวันที่หนึ่งๆ ตามopeningHours
และUTCOffsetMinutes
รวมถึงวันที่และเวลาปัจจุบัน
เมื่อใช้ฟังก์ชันเหล่านี้เพื่อรับเวลาเปิดและ/หรือวันที่ คําขอ fetchPlaceFromPlaceID:
หรือ findPlaceLikelihoodsFromUserLocationWithPlaceFields:
เดิมต้องระบุทั้งช่อง GMSPlaceFieldOpeningHours
และ GMSPlaceFieldUTCOffsetMinutes
หากช่องใดช่องหนึ่งหายไป ออบเจ็กต์ GMSPlace
ที่ได้จะไม่มีเวลาหรือวันที่เปิดทําการ และการโทรจะส่งกลับ GMSPlaceOpenStatusUnknown
เพื่อให้ได้ช่องที่แม่นยํา ให้ขอช่อง GMSPlaceFieldBusinessStatus
และ GMSPlaceFieldUTCOffsetMinutes
ในคําขอสถานที่ต้นฉบับ หากไม่ได้ส่งคําขอ จะถือว่าธุรกิจเปิดทําการอยู่
isOpen
พร้อมรายละเอียดสถานที่
รับสถานที่ตามบัตรประจําตัว
รหัสสถานที่เป็นตัวระบุแบบข้อความที่ระบุสถานที่ได้อย่างแน่ชัด ใน Places SDK สําหรับ iOS คุณสามารถเรียกรหัสของสถานที่จากออบเจ็กต์ GMSPlace
ได้ คุณสามารถจัดเก็บรหัสสถานที่และใช้เพื่อเรียกข้อมูลออบเจ็กต์ GMSPlace
อีกครั้งในภายหลังได้
หากต้องการรับสถานที่ตามรหัส ให้เรียกใช้ GMSPlacesClient
fetchPlaceFromPlaceID:
โดยส่งพารามิเตอร์ต่อไปนี้
- สตริงที่มีรหัสสถานที่
GMSPlaceField
อย่างน้อย 1 รายการโดยระบุประเภทข้อมูลที่ต้องการแสดง- โทเค็นเซสชันหากมีการเรียกเพื่อสรุปการเติมข้อความอัตโนมัติ มิเช่นนั้น ให้ส่งผ่าน
GMSPlaceResultCallback
เพื่อจัดการผลลัพธ์
API จะเรียกใช้เมธอดเรียกกลับที่ระบุ และส่งผ่านในออบเจ็กต์ 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 รายการ
มีบางกรณีที่อาจทําให้สถานที่ได้รับรหัสสถานที่ใหม่ เช่น กรณีนี้อาจเกิดขึ้นหากธุรกิจย้ายไปยังสถานที่ตั้งใหม่
เมื่อคุณขอสถานที่ด้วยการระบุรหัสสถานที่ คุณมั่นใจได้เลยว่าจะได้รับที่เดียวกันในคําตอบเสมอ (หากสถานที่ดังกล่าวยังคงอยู่) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ที่แตกต่างจากรหัสในคําขอ
ดูข้อมูลเพิ่มเติมได้ที่ภาพรวมรหัสสถานที่