Places SDK สำหรับ iOS (ใหม่) ให้ข้อมูลที่สมบูรณ์กับแอปพลิเคชันของคุณ เกี่ยวกับสถานที่ต่างๆ รวมทั้งชื่อและที่อยู่ของสถานที่ ตำแหน่งที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทของสถานที่ (เช่น อย่างไนท์คลับ ร้านสัตว์เลี้ยง พิพิธภัณฑ์ และอื่นๆ วิธีเข้าถึงข้อมูลนี้สำหรับ สถานที่หนึ่ง คุณสามารถใช้รหัสสถานที่ ซึ่งเป็นตัวระบุแบบคงที่ที่ไม่ซ้ำกัน ระบุสถานที่
ดูรายละเอียดสถานที่
GMSPlace
มีข้อมูลเกี่ยวกับสถานที่ที่เจาะจง ซึ่งรวมถึงช่องข้อมูลทั้งหมดที่แสดงใน
ช่องข้อมูลสถานที่ (ใหม่) รับ
GMSPlace
ด้วยการเรียก
GMSPlacesClient
fetchPlaceWithRequest:
การส่งออบเจ็กต์ GMSFetchPlaceRequest
และ
เมธอด Callback ของประเภท
GMSPlaceResultCallback
ออบเจ็กต์ GMSFetchPlaceRequest
ระบุข้อมูลต่อไปนี้
- (ต้องระบุ) รหัสสถานที่ ซึ่งเป็นตัวระบุที่ไม่ซ้ำกันของสถานที่ใน Google Places ฐานข้อมูลใน Google Maps
- (ต้องระบุ) รายการช่องที่จะแสดงผลในออบเจ็กต์
GMSPlace
หรือที่เรียกว่า ฟิลด์มาสก์ ตามที่กำหนดโดยGMSPlaceProperty
หากไม่ได้ระบุอย่างน้อย 1 ช่องในรายการช่อง หรือไม่ได้ระบุ รายการช่อง การเรียกจะแสดงข้อผิดพลาด - (ไม่บังคับ) รหัสภูมิภาคที่ใช้ในการจัดรูปแบบคำตอบ
- (ไม่บังคับ) โทเค็นเซสชันที่ใช้สิ้นสุดเซสชันการเติมข้อความอัตโนมัติ (ใหม่)
ส่งคำขอรายละเอียดสถานที่
ตัวอย่างนี้ได้สถานที่ตามรหัสโดยส่งผ่านพารามิเตอร์ต่อไปนี้
- รหัสสถานที่ของ
ChIJV4k8_9UodTERU5KXbkYpSYs
- รายการฟิลด์ที่ระบุให้แสดงผลชื่อสถานที่และ URL ของเว็บไซต์
GMSPlaceResultCallback
จัดการกับผลลัพธ์
API จะเรียกใช้เมธอด Callback ที่ระบุโดยการส่งผ่านใน
GMSPlace
ออบเจ็กต์ หากไม่พบสถานที่ วัตถุสถานที่จะเป็นค่าศูนย์
Swift
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" // Specify the place data types to return. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue} // Create the GMSFetchPlaceRequest object. let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil) client.fetchPlace(with: fetchPlaceRequest, callback: { (place: GMSPlace?, error: Error?) in guard let place, error == nil else { return } print("Place found: \(String(describing: place.name))") })
Objective-C
// A hotel in Saigon with an attribution. NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs"; // Specify the place data types to return. NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite]; // Create the GMSFetchPlaceRequest object. GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil]; [placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { NSLog(@"Place Found: %@", place.name); NSLog(@"The place URL: %@", place.website); } }];
Places Swift SDK สำหรับ iOS (เวอร์ชันตัวอย่าง)
// A hotel in Saigon with an attribution. let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs" let fetchPlaceRequest = FetchPlaceRequest( placeID: placeID, placeProperties: [.name, .website] ) switch await placesClient.fetchPlace(with: fetchPlaceRequest) { case .success(let place): // Handle place case .failure(let placesError): // Handle error }
คำตอบเรื่องรายละเอียดสถานที่
รายละเอียดสถานที่แสดง
GMSPlace
ที่มีรายละเอียดเกี่ยวกับสถานที่ ระบบจะเติมเฉพาะช่องที่ระบุไว้ในรายการช่องในออบเจ็กต์ GMSPlace
รับสถานะเปิด
ออบเจ็กต์ GMSPlacesClient
มีฟังก์ชันสมาชิกชื่อ isOpenWithRequest
(isOpenRequest
ใน Swift และ isPlaceOpenRequest
ใน GooglePlacesSwift) ที่แสดงคำตอบซึ่งระบุว่าสถานที่ดังกล่าวเปิดอยู่หรือไม่ ตามเวลาที่ระบุในการโทร
เมธอดนี้ใช้อาร์กิวเมนต์เดียวประเภท GMSPlaceIsOpenWithRequest
ที่มี:
- ออบเจ็กต์
GMSPlace
หรือสตริงที่ระบุรหัสสถานที่ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการสร้างออบเจ็กต์สถานที่โดยมีช่องที่จำเป็น โปรดดูรายละเอียดสถานที่
- ออบเจ็กต์
NSDate
(Obj-C) หรือDate
(Swift) ที่ไม่บังคับซึ่งระบุเวลาที่คุณต้องการตรวจสอบ หากไม่ได้ระบุเวลา จะใช้ค่าเริ่มต้นตอนนี้ - เมธอด
GMSPlaceOpenStatusResponseCallback
เพื่อจัดการคำตอบ
เมธอด GMSPlaceIsOpenWithRequest
กำหนดให้ต้องตั้งค่าช่องต่อไปนี้ในออบเจ็กต์ GMSPlace
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
หากไม่มีการระบุช่องเหล่านี้ในออบเจ็กต์สถานที่หรือส่งรหัสสถานที่ เมธอดจะใช้ GMSPlacesClient GMSFetchPlaceRequest:
เพื่อดึงข้อมูล
การตอบกลับ isOpenWithRequest
รายการ
isOpenWithRequest
แสดงผลออบเจ็กต์ GMSPlaceIsOpenResponse
ที่มีค่าบูลีนชื่อ status
ซึ่งระบุว่าธุรกิจเปิดทำการ ปิดทำการ หรือไม่ทราบสถานะ
ภาษา | ค่าหากเปิดอยู่ | ค่าหากปิด | ค่าหากไม่ทราบสถานะ |
---|---|---|---|
Swift | .open |
.closed |
.unknown |
Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
GooglePlacesSwift (เวอร์ชันตัวอย่าง) | true |
false |
nil |
การเรียกเก็บเงินสำหรับ isOpenWithRequest
- มีการเรียกเก็บเงินสำหรับช่อง
GMSPlacePropertyUTCOffsetMinutes
และGMSPlacePropertyBusinessStatus
ภายใต้ SKU ข้อมูลพื้นฐาน ส่วนเวลาทำการที่เหลือจะเรียกเก็บตาม SKU ของรายละเอียดสถานที่ (ขั้นสูง) - หากออบเจ็กต์
GMSPlace
ของคุณมีช่องเหล่านี้จากคำขอก่อนหน้าอยู่แล้ว ระบบจะไม่เรียกเก็บเงินจากคุณอีก
ตัวอย่าง: ส่งคำขอGMSPlaceIsOpenWithRequest
ตัวอย่างต่อไปนี้แสดงวิธีเริ่มต้น GMSPlaceIsOpenWithRequest
ภายในออบเจ็กต์ GMSPlace
ที่มีอยู่
Swift
let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil) GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in if let error = error { // Handle Error } switch response.status { case .open: // Handle open case .closed: // Handle closed case .unknown: // Handle unknown } }
Objective-C
GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil]; [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) { if (error) { // Handle error } switch (response.status) { case GMSPlaceOpenStatusOpen: // Handle open case GMSPlaceOpenStatusClosed: // Handle closed case GMSPlaceOpenStatusUnknown: // Handle unknown } }];
GooglePlacesSwift
let isOpenRequest = IsPlaceOpenRequest(place: place) switch await placesClient.isPlaceOpen(with: isOpenRequest) { case .success(let isOpenResponse): switch isOpenResponse.status { case true: // Handle open case false: // Handle closed case nil: // Handle unknown case .failure(let placesError): // Handle error }
พารามิเตอร์ที่จำเป็น
ใช้ออบเจ็กต์ GMSFetchPlaceRequest
เพื่อระบุพารามิเตอร์ที่จําเป็น
รหัสสถานที่
รหัสสถานที่ที่ใช้ใน Places SDK สำหรับ iOS คือ ตัวระบุเดียวกับที่ใช้ใน Places API, Places SDK สำหรับ Android และ Google API อื่นๆ รหัสสถานที่แต่ละรายการอ้างอิงถึงสถานที่ได้เพียงแห่งเดียว แต่สถานที่ 1 แห่งอาจมีมากกว่า รหัสสถานที่มากกว่า 1 รหัส
มีบางกรณีที่อาจทำให้สถานที่ได้รับรหัสสถานที่ใหม่ ตัวอย่างเช่น กรณีนี้อาจเกิดขึ้นหากธุรกิจย้ายไปยังสถานที่ตั้งใหม่
เมื่อคุณขอสถานที่ด้วยการระบุรหัสสถานที่ คุณสามารถมั่นใจได้ว่า คุณจะได้รับการตอบกลับในตำแหน่งเดิมเสมอ (หากสถานที่นั้นยังคง อยู่แล้ว) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ซึ่ง ที่แตกต่างจากในคำขอของคุณ
รายการช่อง
เมื่อคุณขอรายละเอียดสถานที่ คุณต้องระบุข้อมูลที่จะ
แสดงผลในออบเจ็กต์ GMSPlace
สำหรับสถานที่เป็นมาสก์ของช่อง วิธีกำหนดฟิลด์มาสก์
ส่งอาร์เรย์ค่าจาก
GMSPlaceProperty
ไปยังออบเจ็กต์ GMSFetchPlaceRequest
การมาสก์ฟิลด์เป็นแนวทางปฏิบัติในการออกแบบที่ดี เพื่อให้แน่ใจว่าคุณไม่ได้ขอข้อมูลที่ไม่จำเป็น
จะช่วยป้องกันเวลาประมวลผลและการเรียกเก็บเงินที่ไม่จำเป็น
ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง
ช่องต่อไปนี้จะเรียกใช้ SKU รายละเอียดสถานที่ (รหัสเท่านั้น)
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
,GMSPlacePropertyPhotos
ช่องต่อไปนี้จะเรียกใช้ SKU รายละเอียดสถานที่ (สถานที่ตั้งเท่านั้น)
GMSPlacePropertyAddressComponents
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyViewport
ช่องต่อไปนี้จะเรียกใช้ SKU รายละเอียดสถานที่ (พื้นฐาน)
GMSPlacePropertyBusinessStatus
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyWheelchairAccessibleEntrance
ช่องต่อไปนี้จะเรียกใช้ SKU รายละเอียดสถานที่ (ขั้นสูง)
GMSPlacePropertyCurrentOpeningHours
,GMSPlacePropertySecondaryOpeningHours
,GMSPlacePropertyPhoneNumber
,GMSPlacePropertyPriceLevel
,GMSPlacePropertyRating
,GMSPlacePropertyOpeningHours
,GMSPlacePropertyUserRatingsTotal
,GMSPlacePropertyWebsite
ช่องต่อไปนี้จะเรียกใช้ SKU รายละเอียดสถานที่ (ที่ต้องการ)
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
ตัวอย่างต่อไปนี้ส่งผ่านรายการ
ค่าของช่อง
เพื่อระบุว่าออบเจ็กต์ GMSPlace
ที่แสดงผลตามคำขอประกอบด้วย
ช่อง name
และ placeID
:
Swift
// Specify the place data types to return. let fields: [GMSPlaceProperty] = [.placeID, .name]
Objective-C
// Specify the place data types to return. NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
Places Swift SDK สำหรับ iOS (เวอร์ชันตัวอย่าง)
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
พารามิเตอร์ที่ไม่บังคับ
ใช้ออบเจ็กต์ GMSFetchPlaceRequest
เพื่อระบุพารามิเตอร์ที่ไม่บังคับ
regionCode
รหัสภูมิภาคที่ใช้ในการจัดรูปแบบการตอบกลับ ระบุเป็น ค่ารหัส CLDR แบบ 2 อักขระ นอกจากนี้ พารามิเตอร์นี้อาจทำให้เกิดการให้น้ำหนักพิเศษด้วย ในผลการค้นหา ไม่มีค่าเริ่มต้น
ถ้าชื่อประเทศของฟิลด์ที่อยู่ในการตอบกลับตรงกับ รหัสภูมิภาค รหัสประเทศจะไม่แสดงในที่อยู่
รหัส CLDR ส่วนใหญ่เหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นบางประการเด่นๆ ตัวอย่างเช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ในขณะที่รหัส ISO 3166-1 คือ "gb" (โดยทางเทคนิคสำหรับ นิติบุคคล "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง
sessionToken
โทเค็นเซสชันเป็นสตริงที่ผู้ใช้สร้างขึ้นเพื่อติดตามการเติมข้อความอัตโนมัติ (ใหม่) การเรียกเป็น "เซสชัน" การเติมข้อความอัตโนมัติ (ใหม่) ใช้โทเค็นของเซสชันเพื่อ จัดกลุ่มคำค้นหาและวางขั้นตอนการเลือกในการค้นหาจากการเติมข้อความอัตโนมัติของผู้ใช้ไว้ในเซสชันที่แยกกัน เพื่อวัตถุประสงค์ในการเรียกเก็บเงิน โทเค็นของเซสชันจะส่งไปยังรายละเอียดสถานที่ (ใหม่) การโทรที่เกิดขึ้นหลังการโทรจากการเติมข้อความอัตโนมัติ (ใหม่) สำหรับข้อมูลเพิ่มเติม โปรดดู โทเค็นของเซสชัน
แสดงการระบุแหล่งที่มาในแอปของคุณ
เมื่อแอปแสดงข้อมูลที่ได้จาก
GMSPlacesClient
เช่น รูปภาพและรีวิว แอปต้องแสดงการระบุแหล่งที่มาที่จำเป็นด้วย
เช่น พร็อพเพอร์ตี้ reviews
ของออบเจ็กต์ GMSPlacesClient
มีอาร์เรย์สูงสุด 5 รายการ
GMSPlaceReview
ออบเจ็กต์ ออบเจ็กต์ GMSPlaceReview
แต่ละรายการมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียนได้
หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือผู้เขียนด้วย
การระบุแหล่งที่มา
สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบที่ การระบุแหล่งที่มา