การค้นหาข้อความจะแสดงข้อมูลเกี่ยวกับชุดสถานที่ ตามสตริง เช่น "พิซซ่าในกรุงเทพฯ" "ร้านรองเท้าใกล้สยาม" หรือ "123 ถนนสุขุมวิท" บริการจะตอบกลับด้วยรายการสถานที่ที่ตรงกับสตริงข้อความและความเอนเอียงของตำแหน่งที่ตั้งค่าไว้
บริการนี้มีประโยชน์อย่างยิ่งสำหรับการสืบค้นข้อมูลที่อยู่ที่คลุมเครือในระบบอัตโนมัติ และองค์ประกอบที่ไม่มีที่อยู่ของสตริงอาจตรงกับทั้งธุรกิจและที่อยู่ ตัวอย่างของการค้นหาที่อยู่ที่ไม่ชัดเจนคือที่อยู่ที่มีรูปแบบไม่ดีหรือคำขอที่มีองค์ประกอบที่ไม่มีที่อยู่ เช่น ชื่อธุรกิจ คำขออย่างเช่น 2 ตัวอย่างแรกอาจไม่แสดงผลลัพธ์เลย เว้นแต่จะมีการตั้งค่าตำแหน่ง (เช่น ภูมิภาค การจำกัดตำแหน่ง หรือการให้น้ำหนักพิเศษ)
"10 High Street, UK" หรือ "123 Main Street, US" | "ถนน" หลายสายในสหราชอาณาจักร "ถนนหลัก" หลายสายในสหรัฐอเมริกา การค้นหาไม่แสดงผลการค้นหาที่ต้องการ เว้นแต่จะตั้งค่าการจํากัดตําแหน่งไว้ |
"ร้านอาหารแฟรนไชส์ในกรุงเทพ" | สถานที่ตั้ง "ร้านอาหารแฟรนไชส์" หลายแห่งในนิวยอร์ก แต่ไม่มีที่อยู่หรือแม้แต่ชื่อถนน |
"10 High Street, Escher UK" หรือ "123 Main Street, Pleasanton US" | "High Street" เพียงแห่งเดียวในเมือง Escher ของสหราชอาณาจักร แต่มีเพียง "Main Street" เดียวในเมือง Pleasanton CA ของสหรัฐอเมริกา |
"UniqueRestaurantName New York" | มีสถานประกอบการเพียงแห่งเดียวที่ใช้ชื่อนี้ในนิวยอร์ก โดยไม่ต้องมีที่อยู่แยก |
"ร้านพิซซ่าในหัวหิน" | คำค้นหานี้มีการจำกัดตำแหน่ง และ "ร้านพิซซ่า" เป็น ประเภทสถานที่ที่กำหนดไว้อย่างชัดเจน แสดงผลการค้นหาหลายรายการ |
"+1 514-670-8700" | การค้นหานี้มีหมายเลขโทรศัพท์ โดยจะแสดงผลการค้นหาหลายรายการสำหรับสถานที่ที่เชื่อมโยงกับหมายเลขโทรศัพท์นั้น |
รับรายการสถานที่ด้วยการค้นหาข้อความ
ส่งคำขอการค้นหาข้อความโดยเรียกใช้ GMSPlacesClient
searchByTextWithRequest:
ส่งผ่านออบเจ็กต์
GMSPlaceSearchByTextRequest
ที่กำหนดพารามิเตอร์คำขอและเมธอด Callback ประเภท GMSPlaceSearchByTextResultCallback
เพื่อจัดการการตอบกลับ
ออบเจ็กต์ GMSPlaceSearchByTextRequest
ระบุพารามิเตอร์ที่จำเป็นและไม่บังคับทั้งหมดสำหรับคำขอ พารามิเตอร์ที่จำเป็น ได้แก่
- รายการช่องที่จะแสดงผลในออบเจ็กต์
GMSPlace
หรือที่เรียกว่าฟิลด์มาสก์ ตามที่กำหนดโดยGMSPlaceProperty
หากคุณไม่ระบุอย่างน้อย 1 ช่องในรายการช่อง หรือหากคุณไม่ได้ระบุรายการช่อง การเรียกใช้จะแสดงข้อผิดพลาด - การค้นหาข้อความ
คำขอค้นหาข้อความในตัวอย่างนี้ระบุว่าออบเจ็กต์ GMSPlace
ของการตอบกลับมีชื่อสถานที่และรหัสสถานที่สำหรับออบเจ็กต์ GMSPlace
แต่ละรายการในผลการค้นหา และยังกรองการตอบสนองต่อที่แสดงสถานที่ประเภท "ร้านอาหาร" เท่านั้นอีกด้วย
Swift
// Create the GMSPlaceSearchByTextRequest object. let placeProperties: [GMSPlaceProperty] = [GMSPlacePropertyName, GMSPlacePropertyPlaceID]; let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York" placeProperties:placeProperties) request.isOpenNow = true request.includedType = "restaurant" request.maxResultCount = 5 request.minRating = 3.5 request.rankPreference = .distance request.isStrictTypeFiltering = true request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue] request.locationRestriction = GMSPlaceRectangularLocationOption( CLLocationCoordinate2D(latitude: 20, longitude: 30), CLLocationCoordinate2D(latitude: 40, longitude: 50) ) // Array to hold the places in the response placeResults = []; 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 } self.placeResults = results } GMSPlacesClient.shared().searchByTextWithRequest(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.locationRestriction = GMSPlaceRectangularLocationOption( CLLocationCoordinate2DMake(20, 30), CLLocationCoordinate2DMake(40, 50)); request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(20, 30), 2.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 (placeResults.count > 0) { // Get list of places. _placeResults = placeResults; } }];
GooglePlacesSwift
let restriction = RectangularLocationRestriction( 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 }
การตอบกลับการค้นหาข้อความ
Text Search API จะแสดงผลอาร์เรย์ของรายการที่ตรงกันในรูปแบบของออบเจ็กต์ GMSPlace
โดยมีออบเจ็กต์ GMSPlace
1 รายการต่อตำแหน่งที่ตรงกัน
นอกเหนือจากช่องข้อมูลแล้ว ออบเจ็กต์ GMSPlace
ในคำตอบมีฟังก์ชันสมาชิกต่อไปนี้
-
isOpen
คํานวณว่าสถานที่นั้นๆ เปิดในเวลาที่ระบุหรือไม่ isOpenAtDate
คำนวณว่าสถานที่เปิดในวันที่ที่ระบุหรือไม่
พารามิเตอร์ที่จำเป็น
ใช้ออบเจ็กต์ GMSPlaceSearchByTextRequest
เพื่อระบุพารามิเตอร์ที่จำเป็นสำหรับการค้นหา
-
รายการช่อง
ระบุพร็อพเพอร์ตี้ข้อมูลสถานที่ที่จะแสดง ส่งรายการพร็อพเพอร์ตี้
GMSPlace
ที่ระบุช่องข้อมูลที่ต้องการแสดง หากคุณไม่มาสก์ช่อง คำขอจะแสดงข้อผิดพลาดรายการช่องเป็นแนวทางปฏิบัติที่ดีในการออกแบบเพื่อให้มั่นใจว่าคุณไม่ได้ขอข้อมูลที่ไม่จำเป็น ซึ่งช่วยหลีกเลี่ยงเวลาในการประมวลผลและการเรียกเก็บเงินที่ไม่จำเป็น
ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง
ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (รหัสเท่านั้น)
GMSPlacePropertyPlaceID
,GMSPlacePropertyName
ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (พื้นฐาน)
GMSPlacePropertyAddressComponents
,GMSPlacePropertyBusinessStatus
,GMSPlacePropertyFormattedAddress
,GMSPlacePropertyIconBackgroundColor
,GMSPlacePropertyIconImageURL
,GMSPlacePropertyCoordinate
,GMSPlacePropertyPhotos
,GMSPlacePropertyPlusCode
,GMSPlacePropertyTypes
,GMSPlacePropertyUTCOffsetMinutes
,GMSPlacePropertyViewport
,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
-
textQuery
สตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" "123 ถนนสุขุมวิท" หรือ "สถานที่ที่น่าไปที่สุดในเชียงใหม่"
พารามิเตอร์ที่ไม่บังคับ
ใช้ออบเจ็กต์ GMSPlaceSearchByTextRequest
เพื่อระบุพารามิเตอร์ที่ไม่บังคับสำหรับการค้นหา
includedType
จำกัดผลการค้นหาเฉพาะสถานที่ที่ตรงกับประเภทที่ระบุซึ่งกำหนดโดยตาราง A ระบุได้เพียงประเภทเดียวเท่านั้น เช่น
request.includedType = "bar"
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 เช่น
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(latitude: 20, longitude: 30), radius: 2.0)
สี่เหลี่ยมผืนผ้าเป็นวิวพอร์ตละติจูด-ลองจิจูด ซึ่งแสดงในแนวทแยงมุม 2 ตรงข้ามกับจุดต่ำและสูง จุดต่ำจะทำเครื่องหมายมุมตะวันตกเฉียงใต้ของสี่เหลี่ยมผืนผ้า ส่วนจุดสูงแสดงถึงมุมตะวันออกเฉียงเหนือของสี่เหลี่ยมผืนผ้า
วิวพอร์ตจะถือเป็นภูมิภาคปิด ซึ่งหมายความว่ามีอาณาเขตรวมอยู่ด้วย ขอบเขตของละติจูดต้องอยู่ระหว่าง -90 ถึง 90 องศา และขอบเขตของลองจิจูดต้องอยู่ระหว่าง -180 ถึง 180 องศา (รวม - 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
จำกัดการค้นหาไว้เฉพาะสถานที่ที่มีการทำเครื่องหมายไว้ที่ระดับราคาบางระดับ ค่าเริ่มต้นคือเลือกระดับราคาทั้งหมด
ระบุอาร์เรย์ของค่าที่
PriceLevel
กำหนดอย่างน้อย 1 ค่าเช่น
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
rankPreference
ระบุวิธีจัดอันดับผลการค้นหาในการตอบกลับตามประเภทของคำค้นหา ดังนี้
- สําหรับคําค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในเชียงใหม่"
.relevance
(จัดอันดับผลการค้นหาตามความเกี่ยวข้องของการค้นหา) จะเป็นค่าเริ่มต้น คุณสามารถตั้งค่าrankPreference
เป็น.relevance
หรือ.distance
(จัดอันดับผลการค้นหาตามระยะทาง) - สําหรับการค้นหาที่ไม่ใช่หมวดหมู่ เช่น "Mountain View, CA" เราขอแนะนําให้ไม่ตั้งค่า
rankPreference
- สําหรับคําค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในเชียงใหม่"
regionCode
รหัสภูมิภาคที่ใช้ในการจัดรูปแบบการตอบกลับ ซึ่งระบุเป็นค่า รหัส CLDR แบบ 2 อักขระ พารามิเตอร์นี้อาจทำให้เกิดการให้น้ำหนักพิเศษกับผลการค้นหาได้เช่นกัน ไม่มีค่าเริ่มต้น
หากชื่อประเทศของฟิลด์ที่อยู่ในการตอบกลับตรงกับรหัสภูมิภาค รหัสประเทศจะไม่แสดงในที่อยู่
รหัส CLDR ส่วนใหญ่จะเหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นที่สำคัญบางประการ เช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ขณะที่รหัส ISO 3166-1 คือ "gb" (ทางเทคนิคสำหรับเอนทิตีของ "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง
แสดงการระบุแหล่งที่มาในแอปของคุณ
เมื่อแอปแสดงข้อมูลที่ได้รับจาก
GMSPlacesClient
เช่น รูปภาพและรีวิว แอปต้องแสดงการระบุแหล่งที่มาที่จำเป็นด้วย
เช่น พร็อพเพอร์ตี้ reviews
ของออบเจ็กต์ GMSPlacesClient
มีอาร์เรย์ของออบเจ็กต์ GMSPlaceReview
สูงสุด 5 รายการ ออบเจ็กต์ GMSPlaceReview
แต่ละรายการมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียนได้
หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือการระบุแหล่งที่มาของผู้เขียนด้วย
สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารเกี่ยวกับการระบุแหล่งที่มา