Places SDK สําหรับ iOS (ใหม่) จะให้ข้อมูลเชิงลึกเกี่ยวกับสถานที่แก่แอปของคุณ ซึ่งรวมถึงชื่อและที่อยู่ของสถานที่ ตําแหน่งทางภูมิศาสตร์ที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทสถานที่ (เช่น ไนท์คลับ ร้านค้าสัตว์เลี้ยง พิพิธภัณฑ์) และอื่นๆ หากต้องการเข้าถึงข้อมูลนี้สำหรับสถานที่หนึ่งๆ ให้ใช้รหัสสถานที่ ซึ่งเป็นตัวระบุที่คงที่ซึ่งระบุสถานที่หนึ่งๆ ได้อย่างไม่ซ้ำกัน
ดูรายละเอียดสถานที่
คลาส GMSPlace
มีข้อมูลเกี่ยวกับสถานที่หนึ่งๆ รวมถึงช่องข้อมูลทั้งหมดที่แสดงในช่องข้อมูลสถานที่ (ใหม่) รับออบเจ็กต์ GMSPlace
โดยเรียกใช้ GMSPlacesClient
fetchPlaceWithRequest:
โดยส่งออบเจ็กต์ GMSFetchPlaceRequest
และเมธอดการเรียกกลับประเภท 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 และ API อื่นๆ ของ Google รหัสสถานที่แต่ละรหัสจะอ้างอิงถึงสถานที่ได้เพียงแห่งเดียว แต่สถานที่แห่งเดียวอาจมีรหัสสถานที่ได้มากกว่า 1 รหัส
มีบางสถานการณ์ที่อาจทําให้สถานที่ได้รับรหัสสถานที่ใหม่ ตัวอย่างเช่น กรณีนี้อาจเกิดขึ้นหากธุรกิจย้ายไปสถานที่ใหม่
เมื่อขอสถานที่โดยระบุรหัสสถานที่ คุณจะมั่นใจได้ว่าจะได้รับสถานที่เดียวกันในการตอบกลับเสมอ (หากสถานที่ดังกล่าวยังคงมีอยู่) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ซึ่งแตกต่างจากรหัสในคำขอ
รายการช่อง
เมื่อขอรายละเอียดสถานที่ คุณต้องระบุข้อมูลที่จะให้แสดงในออบเจ็กต์ GMSPlace
สำหรับสถานที่เป็นมาสก์ช่อง หากต้องการกําหนดมาสก์ช่อง ให้ส่งอาร์เรย์ของค่าจาก GMSPlaceProperty
ไปยังออบเจ็กต์ GMSFetchPlaceRequest
การมาสก์ฟิลด์เป็นแนวทางปฏิบัติด้านการออกแบบที่ดีเพื่อให้มั่นใจว่าคุณจะไม่ขอข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาในการประมวลผลและค่าใช้จ่ายในการเรียกเก็บเงินที่ไม่จำเป็น
ระบุฟิลด์ต่อไปนี้อย่างน้อย 1 ฟิลด์
ฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details (ID Only) 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
ฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details (Preferred) SKU
GMSPlacePropertyCurbsidePickup
,GMSPlacePropertyDelivery
,GMSPlacePropertyDineIn
,GMSPlacePropertyEditorialSummary
,GMSPlacePropertyReservable
,GMSPlacePropertyReviews
,GMSPlacePropertyServesBeer
,GMSPlacePropertyServesBreakfast
,GMSPlacePropertyServesBrunch
,GMSPlacePropertyServesDinner
,GMSPlacePropertyServesLunch
,GMSPlacePropertyServesVegetarianFood
,GMSPlacePropertyServesWine
,GMSPlacePropertyTakeout
ตัวอย่างต่อไปนี้ส่งรายการค่าช่อง 2 รายการเพื่อระบุว่าออบเจ็กต์ 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
มีอาร์เรย์ของออบเจ็กต์ GMSPlaceReview
ไม่เกิน 5 รายการ ออบเจ็กต์ GMSPlaceReview
แต่ละรายการอาจมีแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียน
หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือการระบุแหล่งที่มาของผู้เขียนด้วย
ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับการระบุแหล่งที่มา