การค้นหาข้อความ (ใหม่) แสดงข้อมูลเกี่ยวกับชุดสถานที่ตามสตริง (เช่น "พิซซ่า ในนิวยอร์ก" หรือ "ร้านขายรองเท้าใกล้ออตตาวา" หรือ "123 Main Street") บริการจะ ตอบกลับด้วยรายการสถานที่ที่ตรงกับสตริงข้อความและอคติทางตำแหน่ง ที่ตั้งไว้
นอกเหนือจากพารามิเตอร์ที่จำเป็นแล้ว การค้นหาข้อความ (ใหม่) ยังรองรับการปรับแต่งคำค้นหาโดยใช้พารามิเตอร์ที่ไม่บังคับเพื่อให้ได้ผลลัพธ์ที่ดีขึ้น
รับรายการสถานที่โดยการค้นหาข้อความ
ส่งคำขอค้นหาข้อความโดยเรียกใช้ GMSPlacesClient
searchByTextWithRequest:
ส่งออบเจ็กต์
GMSPlaceSearchByTextRequest
ที่กำหนดพารามิเตอร์คำขอและเมธอดเรียกกลับของประเภท
GMSPlaceSearchByTextResultCallback
เพื่อจัดการการตอบกลับ
ออบเจ็กต์ GMSPlaceSearchByTextRequest จะระบุพารามิเตอร์ที่จำเป็นและที่ไม่บังคับทั้งหมด
สำหรับคำขอ พารามิเตอร์ที่จำเป็นมีดังนี้
- รายการฟิลด์ที่จะแสดงในออบเจ็กต์ GMSPlaceหรือที่เรียกว่ามาสก์ฟิลด์ตามที่กำหนดโดยGMSPlacePropertyหากคุณไม่ได้ระบุฟิลด์อย่างน้อย 1 รายการในรายการฟิลด์ หรือหากคุณละเว้น รายการฟิลด์ การเรียกจะแสดงข้อผิดพลาด
- คำค้นหาที่เป็นข้อความ
คำขอค้นหาข้อความตัวอย่างนี้ระบุว่าออบเจ็กต์ GMSPlace ในการตอบกลับ
ต้องมีชื่อสถานที่และรหัสสถานที่สำหรับออบเจ็กต์ GMSPlace แต่ละรายการในผลการค้นหา
 นอกจากนี้ ยังกรองการตอบกลับเพื่อแสดงเฉพาะสถานที่ประเภท "ร้านอาหาร" ด้วย
Places Swift SDK
let restriction = GMSPlaceRectangularLocationOption( northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30), southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50) ) let searchByTextRequest = SearchByTextRequest( textQuery: "pizza in New York", placeProperties: [ .name, .placeID ], locationRestriction: restriction, includedType: .restaurant, maxResultCount: 5, minRating: 3.5, priceLevels: [ .moderate, .inexpensive ], isStrictTypeFiltering: true ) switch await placesClient.searchByText(with: searchByTextRequest) { case .success(let places): // Handle places case .failure(let placesError): // Handle error }
Swift
// Create the GMSPlaceSearchByTextRequest object. let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue} let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0) // Array to hold the places in the response var placeResults: [GMSPlace] = [] let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in guard let self, error == nil else { if let error { print(error.localizedDescription) } return } guard let results = results as? [GMSPlace] else { return } placeResults = results } GMSPlacesClient.shared().searchByText(with: request, callback: callback)
Objective-C
// Create the GMSPlaceSearchByTextRequest object. GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]]; request.isOpenNow = YES; request.includedType = @"restaurant"; request.maxResultCount = 5; request.minRating = 3.5; request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance; request.isStrictTypeFiltering = YES; request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ]; request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0); // Array to hold the places in the response _placeResults = [NSArray array]; // Create the GMSPlaceSearchByTextRequest object. [_placesClient searchByTextWithRequest:request callback:^(NSArray<GMSPlace *> *_Nullable placeResults, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } else { if (placeResults.count > 0) { // Get list of places. _placeResults = placeResults; } } } ];
คำตอบการค้นหาข้อความ
Text Search API จะแสดงผลอาร์เรย์ของการจับคู่ในรูปแบบของออบเจ็กต์
GMSPlace
 โดยมีออบเจ็กต์ GMSPlace 1 รายการต่อสถานที่ที่ตรงกัน
ดูสถานะการเปิด
ออบเจ็กต์ 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 } }];
พารามิเตอร์ที่จำเป็น
ใช้ออบเจ็กต์ GMSPlaceSearchByTextRequest เพื่อระบุพารามิเตอร์ที่จำเป็น
สำหรับการค้นหา
- 
      รายการฟิลด์ระบุพร็อพเพอร์ตี้ข้อมูลสถานที่ที่จะแสดง ส่งรายการพร็อพเพอร์ตี้ GMSPlaceที่ระบุฟิลด์ข้อมูลที่จะแสดง หากคุณละเว้นฟิลด์ มาสก์ คำขอจะแสดงข้อผิดพลาดรายการฟิลด์เป็นแนวทางปฏิบัติในการออกแบบที่ดีเพื่อให้มั่นใจว่าคุณจะไม่ขอข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาในการประมวลผลและการเรียกเก็บเงินที่ไม่จำเป็น ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง - ฟิลด์ต่อไปนี้จะทริกเกอร์ Text Search Essentials ID Only SKU - GMSPlacePropertyPlaceID
- ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU ของ Text Search Pro - GMSPlacePropertyAddressComponents
 - GMSPlacePropertyBusinessStatus
 - GMSPlacePropertyCoordinate
 - GMSPlacePropertyFormattedAddress
 - GMSPlacePropertyIconBackgroundColor
 - GMSPlacePropertyIconImageURL
 - GMSPlacePropertyName
 - GMSPlacePropertyPhotos
 - GMSPlacePropertyPlusCode
 - GMSPlacePropertyTypes
 - GMSPlacePropertyUTCOffsetMinutes
 - GMSPlacePropertyViewport
 - GMSPlacePropertyWheelchairAccessibleEntrance
- ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU ของ Text Search Enterprise - GMSPlacePropertyCurrentOpeningHours
 - GMSPlacePropertySecondaryOpeningHours
 - GMSPlacePropertyPhoneNumber
 - GMSPlacePropertyPriceLevel
 - GMSPlacePropertyRating
 - GMSPlacePropertyOpeningHours
 - GMSPlacePropertyUserRatingsTotal
 - GMSPlacePropertyWebsite
- ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU การค้นหาข้อความ Enterprise Plus - GMSPlacePropertyCurbsidePickup
 - GMSPlacePropertyDelivery
 - GMSPlacePropertyDineIn
 - GMSPlacePropertyEditorialSummary
 - GMSPlacePropertyReservable
 - GMSPlacePropertyReviews
 - GMSPlacePropertyServesBeer
 - GMSPlacePropertyServesBreakfast
 - GMSPlacePropertyServesBrunch
 - GMSPlacePropertyServesDinner
 - GMSPlacePropertyServesLunch
 - GMSPlacePropertyServesVegetarianFood
 - GMSPlacePropertyServesWine
 - GMSPlacePropertyTakeout
 
- 
    textQueryสตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" "123 ถนนเมน" หรือ "สถานที่ที่ดีที่สุดในการเยี่ยมชมในซานฟรานซิสโก" 
พารามิเตอร์ที่ไม่บังคับ
ใช้GMSPlaceSearchByTextRequestออบเจ็กต์เพื่อระบุพารามิเตอร์ที่ไม่บังคับ
สำหรับการค้นหา
- includedType- จำกัดผลการค้นหาให้แสดงเฉพาะสถานที่ที่ตรงกับประเภทที่ระบุซึ่งกำหนดโดยตาราง ก ระบุได้เพียงประเภทเดียว เช่น - let request = SearchByTextRequest()
 request.includedType = "bar"
- let request = SearchByTextRequest()
 request.includedType = "pharmacy"
 
- isOpenNow- หาก - trueให้แสดงเฉพาะสถานที่ที่เปิดให้บริการ ในขณะที่ส่งคำค้นหา หาก- falseให้แสดงธุรกิจทั้งหมด โดยไม่คำนึงถึงสถานะเปิดทำการ สถานที่ที่ไม่ได้ระบุเวลาทำการในฐานข้อมูล Google Places จะ แสดงขึ้นหากคุณตั้งค่าพารามิเตอร์นี้เป็น- false
- isStrictTypeFiltering- ใช้กับพารามิเตอร์ - includeTypeเมื่อตั้งค่าเป็น- trueระบบจะแสดงเฉพาะสถานที่ที่ตรงกับประเภทที่ระบุโดย- includeTypeเมื่อเป็นเท็จ (ค่าเริ่มต้น) คำตอบอาจมีสถานที่ที่ไม่ตรงกับ ประเภทที่ระบุ
- locationBias- ระบุพื้นที่ที่จะค้นหา ตำแหน่งนี้ทำหน้าที่เป็นค่าอคติ ซึ่งหมายความว่า ระบบจะแสดงผลการค้นหาที่อยู่รอบๆ ตำแหน่งที่ระบุ รวมถึงผลการค้นหา ที่อยู่นอกพื้นที่ที่ระบุ - คุณระบุ - locationRestrictionหรือ- locationBiasได้ แต่จะระบุทั้ง 2 อย่างไม่ได้ คิดว่า- locationRestrictionเป็นการระบุ ภูมิภาคที่ผลการค้นหาต้องอยู่ภายใน และ- locationBiasเป็นการ ระบุภูมิภาคที่ผลการค้นหาต้องอยู่ใกล้ แต่สามารถอยู่นอก พื้นที่ได้- ระบุภูมิภาคเป็นวิวพอร์ตสี่เหลี่ยมผืนผ้าหรือเป็นวงกลม - วงกลมกำหนดโดยจุดศูนย์กลางและรัศมีเป็นเมตร รัศมี ต้องอยู่ระหว่าง 0.0 ถึง 50000.0 เท่านั้น รัศมีเริ่มต้นคือ 0.0 เช่น - let request = SearchByTextRequest() request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0) 
- สี่เหลี่ยมผืนผ้าคือวิวพอร์ตละติจูด-ลองจิจูด ซึ่งแสดงเป็นจุดต่ำและจุดสูงที่อยู่ตรงข้ามกันในแนวทแยง 2 จุด จุดต่ำสุดจะทำเครื่องหมายมุมตะวันตกเฉียงใต้ ของสี่เหลี่ยมผืนผ้า และจุดสูงสุดจะแสดงมุมตะวันออกเฉียงเหนือ ของสี่เหลี่ยมผืนผ้า - ระบบจะถือว่าวิวพอร์ตเป็น ภูมิภาคปิด ซึ่งหมายความว่ารวมถึงขอบเขตของวิวพอร์ตด้วย ขอบเขตละติจูด ต้องอยู่ระหว่าง -90 ถึง 90 องศา และขอบเขตลองจิจูด ต้องอยู่ระหว่าง -180 ถึง 180 องศา - หาก low=highวิวพอร์ตจะประกอบด้วย จุดเดียว
- หาก low.longitude>high.longitudeระบบจะกลับช่วงลองจิจูด (วิวพอร์ตข้ามเส้นลองจิจูด 180 องศา)
- หาก low.longitude= -180 องศา และhigh.longitude= 180 องศา วิวพอร์ตจะรวมลองจิจูดทั้งหมด
- หาก low.longitude= 180 องศาและhigh.longitude= -180 องศา ช่วงลองจิจูดจะ ว่างเปล่า
- หาก low.latitude>high.latitudeช่วงละติจูดจะว่าง
 
- หาก 
 
- locationRestriction- ระบุพื้นที่ที่จะค้นหา ระบบจะไม่แสดงผลลัพธ์ที่อยู่นอกพื้นที่ที่ระบุ ระบุภูมิภาคเป็นวิวพอร์ตสี่เหลี่ยม ดูคำอธิบายของ - locationBiasเพื่อดูข้อมูลเกี่ยวกับการกำหนดวิวพอร์ต- คุณระบุ - locationRestrictionหรือ- locationBiasได้ แต่จะระบุทั้ง 2 อย่างไม่ได้ คิดว่า- locationRestrictionเป็นการระบุ ภูมิภาคที่ผลการค้นหาต้องอยู่ภายใน และ- locationBiasเป็นการ ระบุภูมิภาคที่ผลการค้นหาต้องอยู่ใกล้ แต่สามารถอยู่นอก พื้นที่ได้
- 
    maxResultCountระบุจำนวนผลการค้นหาสถานที่สูงสุดที่จะแสดง ต้องอยู่ระหว่าง 1 ถึง 20 (ค่าเริ่มต้น) เท่านั้น 
- minRating- จำกัดผลลัพธ์เฉพาะผลลัพธ์ที่มีคะแนนจากผู้ใช้โดยเฉลี่ยมากกว่า หรือเท่ากับขีดจำกัดนี้ ค่าต้องอยู่ระหว่าง 0.0 ถึง 5.0 (รวม) โดยเพิ่มขึ้นทีละ 0.5 เช่น 0, 0.5, 1.0, ... , 5.0 ระบบจะปัดเศษค่าขึ้นเป็น 0.5 ที่ใกล้ที่สุด เช่น ค่า 0.6 จะตัดผลลัพธ์ทั้งหมดที่มีคะแนนน้อยกว่า 1.0 ออก 
- 
    priceLevelsจำกัดการค้นหาเฉพาะสถานที่ที่มีการทำเครื่องหมายในระดับราคาที่กำหนด ค่าเริ่มต้นคือการเลือกระดับราคาทั้งหมด ระบุอาร์เรย์ของค่าอย่างน้อย 1 ค่าที่กำหนดโดย PriceLevelเช่น let request = SearchByTextRequest() request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue] 
- rankPreference- ระบุวิธีจัดอันดับผลลัพธ์ในการตอบกลับตามประเภทของคำค้นหา ดังนี้ - สำหรับคำค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในนิวยอร์ก"
      .relevance(จัดอันดับผลลัพธ์ตามความเกี่ยวข้องกับการค้นหา) คือค่าเริ่มต้น คุณตั้งค่าrankPreferenceเป็น.relevanceหรือ.distance(จัดอันดับผลลัพธ์ตามระยะทาง) ได้
- สำหรับคำค้นหาที่ไม่ใช่หมวดหมู่ เช่น "เมาน์เทนวิว แคลิฟอร์เนีย" เราขอแนะนำ
      ให้คุณปล่อยrankPreferenceไว้โดยไม่ต้องตั้งค่า
 
- สำหรับคำค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในนิวยอร์ก"
      
- regionCode- รหัสภูมิภาคที่ใช้จัดรูปแบบการตอบกลับ โดยระบุเป็นค่า รหัส CLDR 2 อักขระ พารามิเตอร์นี้อาจส่งผลต่อความเอนเอียงของผลการค้นหาด้วย ไม่มีค่าเริ่มต้น - หากชื่อประเทศของช่องที่อยู่ในคำตอบตรงกับรหัสภูมิภาค ระบบจะละเว้นรหัสประเทศจากที่อยู่ - รหัส CLDR ส่วนใหญ่จะเหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นที่สำคัญบางประการ ตัวอย่างเช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ขณะที่รหัส ISO 3166-1 คือ "gb" (ในทางเทคนิคสำหรับ นิติบุคคลของ "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์นี้อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง 
- shouldIncludePureServiceAreaBusinesses- หากเป็น - trueระบบจะแสดงธุรกิจที่ให้บริการเฉพาะในพื้นที่ในผลการค้นหา ธุรกิจที่ให้บริการตามสถานที่เพียงอย่างเดียวคือธุรกิจที่บริการแบบถึงที่หรือออกให้บริการแก่ลูกค้าโดยตรง โดยไม่ได้ให้บริการลูกค้า ณ ที่อยู่ธุรกิจ- เช่น - Places Swift SDK- let request = SearchByTextRequest() request.shouldIncludePureServiceAreaBusinesses = true - Swift- let request = SearchByTextRequest() request.shouldIncludePureServiceAreaBusinesses: true - Objective-C- GMSPlaceSearchByTextRequest *request = [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyAll]]; request.shouldIncludePureServiceAreaBusinesses = YES; 
แสดงการระบุแหล่งที่มาในแอป
เมื่อแอปแสดงข้อมูลที่ได้จาก
GMSPlacesClient
เช่น รูปภาพและรีวิว แอปจะต้องแสดงการระบุแหล่งที่มาที่จำเป็นด้วย
เช่น พร็อพเพอร์ตี้ reviews ของออบเจ็กต์ GMSPlacesClient
มีอาร์เรย์ของออบเจ็กต์ GMSPlaceReview
ได้สูงสุด 5 รายการ ออบเจ็กต์ GMSPlaceReview แต่ละรายการอาจมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียน
หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือการระบุแหล่งที่มาของผู้เขียนด้วย
ดูข้อมูลเพิ่มเติมได้ในเอกสารเกี่ยวกับการระบุแหล่งที่มา