Places SDK สำหรับ iOS (ใหม่) จะให้ข้อมูลมากมายเกี่ยวกับสถานที่แก่แอปของคุณ ซึ่งรวมถึงชื่อและที่อยู่ของสถานที่ ตำแหน่งทางภูมิศาสตร์ที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทของสถานที่ (เช่น ไนต์คลับ ร้านขายสัตว์เลี้ยง พิพิธภัณฑ์) และอื่นๆ หากต้องการเข้าถึงข้อมูลนี้สำหรับสถานที่ที่เฉพาะเจาะจง คุณสามารถใช้รหัสสถานที่ ซึ่งเป็นตัวระบุที่เสถียรและระบุสถานที่ได้โดยไม่ซ้ำกัน
ดูรายละเอียดสถานที่
คลาส
GMSPlace
มีข้อมูลเกี่ยวกับสถานที่ที่เฉพาะเจาะจง ซึ่งรวมถึงช่องข้อมูลทั้งหมดที่แสดงใน
ช่องข้อมูลสถานที่ (ใหม่) รับออบเจ็กต์
GMSPlace
โดยเรียก
GMSPlacesClient
fetchPlaceWithRequest:,
แล้วส่งออบเจ็กต์ GMSFetchPlaceRequest และเมธอด Callback ประเภท
GMSPlaceResultCallback
ออบเจ็กต์ GMSFetchPlaceRequest จะระบุข้อมูลต่อไปนี้
- (บังคับ) รหัสสถานที่ ซึ่งเป็นตัวระบุที่ไม่ซ้ำสำหรับสถานที่ในฐานข้อมูล Google Places และใน Google Maps
- (บังคับ) รายการช่องที่จะแสดงผลในออบเจ็กต์
GMSPlaceหรือที่เรียกว่า Field Mask ตามที่กำหนดโดยGMSPlacePropertyหากคุณไม่ระบุช่องอย่างน้อย 1 ช่องในรายการช่อง หรือหากคุณละเว้น รายการช่อง การเรียกจะแสดงข้อผิดพลาด - (ไม่บังคับ) รหัสภูมิภาคที่ใช้จัดรูปแบบการตอบกลับ
- (ไม่บังคับ) โทเค็นของเซสชันที่ใช้สิ้นสุดเซสชันการเติมข้อความอัตโนมัติ (ใหม่)
ส่งคำขอรายละเอียดสถานที่
ตัวอย่างนี้จะรับสถานที่ตามรหัส โดยส่งพารามิเตอร์ต่อไปนี้
- รหัสสถานที่
ChIJV4k8_9UodTERU5KXbkYpSYs - รายการช่องที่ระบุให้แสดงผลชื่อสถานที่และ URL ของเว็บไซต์
- A
GMSPlaceResultCallbackสำหรับจัดการผลลัพธ์
API จะเรียกใช้เมธอด Callback ที่ระบุ โดยส่ง
GMSPlace
ออบเจ็กต์ หากไม่พบสถานที่ ออบเจ็กต์สถานที่จะเป็น nil
Places Swift SDK
// 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 }
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); } }];
การตอบกลับรายละเอียดสถานที่
รายละเอียดสถานที่แสดงผล
GMSPlace ที่มีรายละเอียดเกี่ยวกับสถานที่ ระบบจะป้อนข้อมูลเฉพาะช่องที่ระบุในรายการช่องลงในออบเจ็กต์ GMSPlace
ดูสถานะเปิด
ออบเจ็กต์ GMSPlacesClient มีฟังก์ชันสมาชิกที่เรียกว่า isOpenWithRequest (isOpenRequest ใน Swift และ isPlaceOpenRequest ใน GooglePlacesSwift) ซึ่งแสดงผลการตอบกลับที่ระบุว่าสถานที่เปิดอยู่หรือไม่ในขณะนี้ โดยอิงตามเวลาที่ระบุในการเรียก
เมธอดนี้ใช้การโต้แย้งเดียวประเภท GMSPlaceIsOpenWithRequest ซึ่งมีข้อมูลต่อไปนี้
- ออบเจ็กต์
GMSPlaceหรือสตริงที่ระบุรหัสสถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างออบเจ็กต์สถานที่ด้วยช่องที่จำเป็นได้ที่ รายละเอียดสถานที่
- ออบเจ็กต์
NSDate(Obj-C) หรือDate(Swift) ที่ไม่บังคับ ซึ่งระบุเวลาที่ต้องการตรวจสอบ หากไม่ได้ระบุเวลา ระบบจะใช้เวลาปัจจุบันเป็นค่าเริ่มต้น - เมธอด
GMSPlaceOpenStatusResponseCallbackสำหรับจัดการการตอบกลับ >
เมธอด GMSPlaceIsOpenWithRequest กำหนดให้ตั้งค่าช่องต่อไปนี้ในออบเจ็กต์ GMSPlace
GMSPlacePropertyUTCOffsetMinutesGMSPlacePropertyBusinessStatusGMSPlacePropertyOpeningHoursGMSPlacePropertyCurrentOpeningHoursGMSPlacePropertySecondaryOpeningHours
หากไม่ได้ระบุช่องเหล่านี้ในออบเจ็กต์สถานที่ หรือหากคุณส่งรหัสสถานที่ เมธอดจะใช้ GMSPlacesClient GMSFetchPlaceRequest: เพื่อดึงข้อมูล
การตอบกลับ isOpenWithRequest
isOpenWithRequest แสดงผลออบเจ็กต์ GMSPlaceIsOpenResponse ที่มีค่าบูลีนชื่อ status ซึ่งระบุว่าธุรกิจเปิด ปิด หรือไม่ทราบสถานะ
| ภาษา | ค่าหากเปิด | ค่าหากปิด | ค่าหากไม่ทราบสถานะ |
|---|---|---|---|
| Places Swift | true |
false |
nil |
| Swift | .open |
.closed |
.unknown |
| Objective-C | GMSPlaceOpenStatusOpen |
GMSPlaceOpenStatusClosed |
GMSPlaceOpenStatusUnknown |
การเรียกเก็บเงินสำหรับ isOpenWithRequest
- ระบบจะเรียกเก็บเงินช่อง
GMSPlacePropertyUTCOffsetMinutesและGMSPlacePropertyBusinessStatusภายใต้ SKU ข้อมูลพื้นฐาน ส่วนเวลาทำการอื่นๆ จะเรียกเก็บเงินภายใต้ SKU Enterprise ของรายละเอียดสถานที่ - หากออบเจ็กต์
GMSPlaceมี ช่องเหล่านี้อยู่แล้วจากการขอครั้งก่อน ระบบจะไม่เรียกเก็บเงินคุณอีก
ตัวอย่าง: ส่งคำขอ GMSPlaceIsOpenWithRequest
ตัวอย่างต่อไปนี้แสดงวิธีเริ่มต้น GMSPlaceIsOpenWithRequest ภายในออบเจ็กต์ GMSPlace ที่มีอยู่
Places Swift SDK
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 }
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 } }];
พารามิเตอร์ที่จำเป็น
ใช้ออบเจ็กต์ GMSFetchPlaceRequest เพื่อระบุพารามิเตอร์ที่จำเป็น
รหัสสถานที่
รหัสสถานที่ที่ใช้ใน Places SDK สำหรับ iOS เป็น ตัวระบุเดียวกับที่ใช้ใน Places API, Places SDK สำหรับ Android และ Google API อื่นๆ รหัสสถานที่แต่ละรหัสจะอ้างอิงได้เพียงสถานที่เดียว แต่สถานที่เดียวอาจมีรหัสสถานที่มากกว่า 1 รหัส
มีบางกรณีที่อาจทำให้สถานที่ได้รับรหัสสถานที่ใหม่ เช่น กรณีนี้อาจเกิดขึ้นหากธุรกิจย้ายไปสถานที่ใหม่
เมื่อขอสถานที่โดยระบุรหัสสถานที่ คุณมั่นใจได้ว่าจะได้รับสถานที่เดียวกันในการตอบกลับเสมอ (หากสถานที่นั้นยังคงอยู่) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ที่แตกต่างจากรหัสในคำขอ
รายการช่อง
เมื่อขอรายละเอียดสถานที่ คุณต้องระบุข้อมูลที่จะแสดงผลในออบเจ็กต์ GMSPlace สำหรับสถานที่นั้นๆ เป็น Field Mask หากต้องการกำหนด Field Mask ให้ส่งอาร์เรย์ของค่าจาก GMSPlaceProperty ไปยังออบเจ็กต์ GMSFetchPlaceRequest
การมาสก์ช่องเป็นแนวทางปฏิบัติที่ดีในการออกแบบเพื่อให้แน่ใจว่าคุณจะไม่ขอข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาในการประมวลผลและการเรียกเก็บเงินที่ไม่จำเป็น
ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง
ช่องต่อไปนี้จะทริกเกอร์ SKU รายละเอียดสถานที่แบบจำเป็น (รหัสเท่านั้น):
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotosดูรายการช่องทั้งหมดและ SKU ที่เกี่ยวข้องได้ที่ ช่องข้อมูลสถานที่ (ใหม่)
ช่องต่อไปนี้จะทริกเกอร์ SKU รายละเอียดสถานที่แบบจำเป็น:
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewportดูรายการช่องทั้งหมดและ SKU ที่เกี่ยวข้องได้ที่ ช่องข้อมูลสถานที่ (ใหม่)
ช่องต่อไปนี้จะทริกเกอร์ SKU รายละเอียดสถานที่แบบมืออาชีพ:
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntranceดูรายการช่องทั้งหมดและ SKU ที่เกี่ยวข้องได้ที่ ช่องข้อมูลสถานที่ (ใหม่)
ช่องต่อไปนี้จะทริกเกอร์ SKU รายละเอียดสถานที่แบบมืออาชีพ:
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsiteดูรายการช่องทั้งหมดและ SKU ที่เกี่ยวข้องได้ที่ ช่องข้อมูลสถานที่ (ใหม่)
ช่องต่อไปนี้จะทริกเกอร์ SKU Enterprise ของรายละเอียดสถานที่:
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeoutดูรายการช่องทั้งหมดและ SKU ที่เกี่ยวข้องได้ที่ ช่องข้อมูลสถานที่ (ใหม่)
ตัวอย่างต่อไปนี้จะส่งรายการค่าช่อง 2 ค่า
เพื่อระบุว่าออบเจ็กต์ GMSPlace ที่แสดงผลโดยคำขอมีช่อง
name และ placeID
Places Swift SDK
// Specify the place data types to return. let fields: [PlaceProperty] = [.placeID, .displayName]
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];
พารามิเตอร์ที่ไม่บังคับ
ใช้ออบเจ็กต์ GMSFetchPlaceRequest เพื่อระบุพารามิเตอร์ที่ไม่บังคับ
regionCode
รหัสภูมิภาคที่ใช้จัดรูปแบบการตอบกลับ ซึ่งระบุเป็นค่ารหัส CLDR 2 หลัก พารามิเตอร์นี้อาจส่งผลต่อผลการค้นหาด้วย ไม่มีค่าเริ่มต้น
หากชื่อประเทศของช่องที่อยู่ในการตอบกลับตรงกับรหัสภูมิภาค ระบบจะไม่รวมรหัสประเทศไว้ในที่อยู่
รหัส CLDR ส่วนใหญ่จะเหมือนกับรหัส ISO 3166-1 ยกเว้นบางรหัส เช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ขณะที่รหัส ISO 3166-1 คือ "gb" (ในทางเทคนิคแล้วสำหรับหน่วยงาน "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์นี้อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง
sessionToken
โทเค็นเซสชันเป็นสตริงที่ผู้ใช้สร้างขึ้นซึ่งติดตามการเรียกการเติมข้อความอัตโนมัติ (ใหม่) เป็น "เซสชัน" การเติมข้อความอัตโนมัติ (ใหม่) ใช้โทเค็นเซสชันเพื่อจัดกลุ่มระยะการค้นหาและการเลือกสถานที่ของผู้ใช้ในการค้นหาการเติมข้อความอัตโนมัติเป็นเซสชันที่แยกกันเพื่อวัตถุประสงค์ในการเรียกเก็บเงิน ระบบจะส่งโทเค็นเซสชันไปยังการเรียกรายละเอียดสถานที่ (ใหม่) ที่ตามมาหลังจากการเรียกการเติมข้อความอัตโนมัติ (ใหม่) ดูข้อมูลเพิ่มเติมได้ที่ โทเค็นเซสชัน
แสดงการระบุแหล่งที่มาในแอป
เมื่อแอปแสดงข้อมูลที่ได้รับจาก
GMSPlacesClientเช่น รูปภาพและรีวิว แอปจะต้องแสดงการระบุแหล่งที่มาที่จำเป็นด้วย
ตัวอย่างเช่น พร็อพเพอร์ตี้ reviews ของออบเจ็กต์ GMSPlacesClient
มีอาร์เรย์ของ
ออบเจ็กต์GMSPlaceReview
สูงสุด 5 รายการ ออบเจ็กต์ GMSPlaceReview แต่ละรายการอาจมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียน
หากคุณแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือการระบุแหล่งที่มาของผู้เขียนด้วย
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับ การระบุแหล่งที่มา