Places SDK สำหรับ iOS (ใหม่) ให้ข้อมูลที่หลากหลายเกี่ยวกับสถานที่แก่แอปของคุณ ซึ่งรวมถึงชื่อและที่อยู่ของสถานที่ ตำแหน่งทางภูมิศาสตร์ ที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทของสถานที่ (เช่น ไนต์คลับ ร้านขายสัตว์เลี้ยง พิพิธภัณฑ์) และอื่นๆ หากต้องการเข้าถึงข้อมูลนี้สำหรับ สถานที่ที่เฉพาะเจาะจง คุณสามารถใช้รหัสสถานที่ ซึ่งเป็นตัวระบุที่เสถียรซึ่งระบุ สถานที่ที่ไม่ซ้ำกัน
รับรายละเอียดสถานที่
คลาส
GMSPlace
มีข้อมูลเกี่ยวกับสถานที่ที่เฉพาะเจาะจง รวมถึงฟิลด์ข้อมูลทั้งหมดที่แสดงใน
ฟิลด์ข้อมูลสถานที่ (ใหม่) รับออบเจ็กต์
GMSPlace
โดยการเรียกใช้
GMSPlacesClient
fetchPlaceWithRequest:
ส่งผ่านออบเจ็กต์ GMSFetchPlaceRequest
และ
เมธอดเรียกกลับประเภท
GMSPlaceResultCallback
ออบเจ็กต์ GMSFetchPlaceRequest
จะระบุข้อมูลต่อไปนี้
- (ต้องระบุ) รหัสสถานที่ ซึ่งเป็นตัวระบุที่ไม่ซ้ำสำหรับสถานที่ในฐานข้อมูล Google Places และใน Google Maps
- (ต้องระบุ) รายการฟิลด์ที่จะแสดงในออบเจ็กต์
GMSPlace
หรือที่เรียกว่ามาสก์ฟิลด์ตามที่กำหนดโดยGMSPlaceProperty
หากคุณไม่ได้ระบุฟิลด์อย่างน้อย 1 รายการในรายการฟิลด์ หรือหากคุณละเว้น รายการฟิลด์ การเรียกจะแสดงข้อผิดพลาด - (ไม่บังคับ) รหัสภูมิภาคที่ใช้จัดรูปแบบการตอบกลับ
- (ไม่บังคับ) โทเค็นเซสชันที่ใช้เพื่อสิ้นสุดเซสชันการเติมข้อความอัตโนมัติ (ใหม่)
ส่งคำขอรายละเอียดสถานที่
ตัวอย่างนี้รับสถานที่ตามรหัสโดยส่งพารามิเตอร์ต่อไปนี้
- รหัสสถานที่ของ
ChIJV4k8_9UodTERU5KXbkYpSYs
- รายการฟิลด์ที่ระบุให้แสดงชื่อสถานที่และ URL ของเว็บไซต์
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
หรือสตริงที่ระบุรหัสสถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างออบเจ็กต์ Place ที่มีฟิลด์ที่จำเป็นได้ที่รายละเอียดสถานที่
- ออบเจ็กต์
NSDate
(Obj-C) หรือDate
(Swift) ที่ไม่บังคับซึ่งระบุเวลาที่คุณต้องการตรวจสอบ หากไม่ได้ระบุเวลา ค่าเริ่มต้นจะเป็นเวลาปัจจุบัน GMSPlaceOpenStatusResponseCallback
วิธีจัดการการตอบกลับ >
เมธอด GMSPlaceIsOpenWithRequest
ต้องตั้งค่าฟิลด์ต่อไปนี้ในออบเจ็กต์ GMSPlace
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyBusinessStatus
GMSPlacePropertyOpeningHours
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
หากไม่ได้ระบุช่องเหล่านี้ในออบเจ็กต์สถานที่ หรือหากคุณส่งรหัสสถานที่ เมธอดจะใช้ 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 ของรายละเอียดสถานที่สำหรับองค์กร - หาก
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
สำหรับสถานที่นั้นเป็นมาสก์ฟิลด์ หากต้องการกำหนดมาสก์ฟิลด์
ให้ส่งอาร์เรย์ของค่าจาก
GMSPlaceProperty
ไปยังออบเจ็กต์ GMSFetchPlaceRequest
การมาสก์ฟิลด์เป็นแนวทางปฏิบัติในการออกแบบที่ดีเพื่อให้แน่ใจว่าคุณจะไม่ขอข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาในการประมวลผลและการเรียกเก็บเงินที่ไม่จำเป็น
ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง
ฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details Essentials ID Only SKU
GMSPlacePropertyPlaceID
GMSPlacePropertyPhotos
ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU ของรายละเอียดสถานที่ที่จำเป็น
GMSPlacePropertyAddressComponents
GMSPlacePropertyFormattedAddress
GMSPlacePropertyCoordinate
GMSPlacePropertyPlusCode
GMSPlacePropertyTypes
GMSPlacePropertyViewport
ฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details Pro SKU
GMSPlacePropertyBusinessStatus
GMSPlacePropertyIconBackgroundColor
GMSPlacePropertyIconImageURL
GMSPlacePropertyName
GMSPlacePropertyUTCOffsetMinutes
GMSPlacePropertyWheelchairAccessibleEntrance
ฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details Pro SKU
GMSPlacePropertyCurrentOpeningHours
GMSPlacePropertySecondaryOpeningHours
GMSPlacePropertyPhoneNumber
GMSPlacePropertyPriceLevel
GMSPlacePropertyRating
GMSPlacePropertyOpeningHours
GMSPlacePropertyUserRatingsTotal
GMSPlacePropertyWebsite
ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU ของรายละเอียดสถานที่สำหรับองค์กร
GMSPlacePropertyCurbsidePickup
GMSPlacePropertyDelivery
GMSPlacePropertyDineIn
GMSPlacePropertyEditorialSummary
GMSPlacePropertyReservable
GMSPlacePropertyReviews
GMSPlacePropertyServesBeer
GMSPlacePropertyServesBreakfast
GMSPlacePropertyServesBrunch
GMSPlacePropertyServesDinner
GMSPlacePropertyServesLunch
GMSPlacePropertyServesVegetarianFood
GMSPlacePropertyServesWine
GMSPlacePropertyTakeout
ตัวอย่างต่อไปนี้ส่งรายการค่าฟิลด์ 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
โทเค็นเซสชันคือสตริงที่ผู้ใช้สร้างขึ้นซึ่งติดตามการเรียก Autocomplete (New) เป็น "เซสชัน" การเติมข้อความอัตโนมัติ (ใหม่) ใช้โทเค็นเซสชันเพื่อจัดกลุ่มคำค้นหาและวางเฟสการเลือกของการค้นหาการเติมข้อความอัตโนมัติของผู้ใช้ลงในเซสชันที่ไม่ต่อเนื่องเพื่อวัตถุประสงค์ในการเรียกเก็บเงิน ระบบจะส่งโทเค็นเซสชันไปยังการเรียกรายละเอียดสถานที่ (ใหม่) ที่ตามมาหลังการเรียกการเติมข้อความอัตโนมัติ (ใหม่) ดูข้อมูลเพิ่มเติมได้ที่ โทเค็นเซสชัน
แสดงการระบุแหล่งที่มาในแอป
เมื่อแอปแสดงข้อมูลที่ได้จาก
GMSPlacesClient
เช่น รูปภาพและรีวิว แอปจะต้องแสดงการระบุแหล่งที่มาที่จำเป็นด้วย
เช่น พร็อพเพอร์ตี้ reviews
ของออบเจ็กต์ GMSPlacesClient
มีอาร์เรย์ของออบเจ็กต์ GMSPlaceReview
ได้สูงสุด 5 รายการ ออบเจ็กต์ GMSPlaceReview
แต่ละรายการอาจมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียน
หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือการระบุแหล่งที่มาของผู้เขียนด้วย
ดูข้อมูลเพิ่มเติมได้ในเอกสารเกี่ยวกับการระบุแหล่งที่มา