การค้นหาข้อความจะแสดงข้อมูลเกี่ยวกับชุดสถานที่ ตามสตริง ตัวอย่างเช่น "พิซซ่าในกรุงเทพ" "ร้านขายรองเท้าใกล้ Ottawa" หรือ "123 Main Street" บริการตอบสนองด้วยรายการสถานที่ การจับคู่สตริงข้อความและความเอนเอียงของตำแหน่งที่ตั้งค่าไว้
บริการนี้มีประโยชน์มากในการทำให้ที่อยู่ที่คลุมเครือ คำค้นหาในระบบอัตโนมัติ และคอมโพเนนต์ที่ไม่ใช่ที่อยู่ของสตริงอาจตรงกับธุรกิจ ที่อยู่ ตัวอย่างของข้อความค้นหาที่อยู่ที่ไม่ชัดเจนคือที่อยู่ที่มีรูปแบบไม่ถูกต้อง หรือคำขอที่มีองค์ประกอบที่ไม่ใช่ที่อยู่ เช่น ชื่อธุรกิจ คำขออย่างเช่น 2 ตัวอย่างแรกอาจแสดงผลลัพธ์เป็น 0 เว้นแต่ มีการตั้งค่าตำแหน่ง (เช่น ภูมิภาค การจำกัดตำแหน่ง หรือการให้น้ำหนักพิเศษของตำแหน่ง)
"10 ถนนวิทยุ เขตปทุมวัน กรุงเทพฯ" หรือ "123 Main Street, US" | "High Street" หลายแห่งในสหราชอาณาจักร "ถนนหลัก" หลายแห่งในสหรัฐอเมริกา การค้นหาไม่แสดงผลการค้นหาที่ต้องการ เว้นแต่จะมีข้อจำกัดเกี่ยวกับตำแหน่ง ตั้งค่า |
"ร้านอาหารแฟรนไชส์ในกรุงเทพ" | "ร้านอาหารแฟรนไชส์" หลายแห่ง สถานที่ตั้งในนิวยอร์ก ไม่มีที่อยู่ หรือ แม้แต่ชื่อถนน |
"10 High Street, Escher UK" หรือ "123 Main Street, Pleasanton US" | "High Street" เพียงรายการเดียว ในเมืองเอเชอร์ของสหราชอาณาจักร "Main Street" เพียงแห่งเดียวเท่านั้น ใน Pleasanton แคลิฟอร์เนีย |
"UniqueRestaurantName New York" | มีสถานประกอบการเพียงแห่งเดียวที่ใช้ชื่อนี้ในนิวยอร์ก ไม่มีที่อยู่ ที่ต้องแยกความแตกต่าง |
"ร้านพิซซ่าในหัวหิน" | คำค้นหานี้มีการจำกัดตำแหน่ง และ "ร้านพิซซ่า" เท่ากับ ประเภทสถานที่ที่กำหนดไว้อย่างชัดเจน แสดงผลการค้นหาหลายรายการ |
"+1 514-670-8700" | การค้นหานี้มีหมายเลขโทรศัพท์ แสดงผลการค้นหาหลายรายการสำหรับ ที่เชื่อมโยงกับหมายเลขโทรศัพท์นั้น |
ดูรายชื่อสถานที่ตามการค้นหาข้อความ
ส่งคำขอการค้นหาด้วยข้อความโดยโทรไปที่ GMSPlacesClient
searchByTextWithRequest:
การส่งผ่าน
GMSPlaceSearchByTextRequest
ออบเจ็กต์ที่กำหนดพารามิเตอร์คำขอและเมธอด Callback ประเภท
GMSPlaceSearchByTextResultCallback
,
ในการจัดการกับคำตอบ
ออบเจ็กต์ GMSPlaceSearchByTextRequest
ระบุ
พารามิเตอร์ที่ต้องระบุและไม่บังคับ
สำหรับคำขอ พารามิเตอร์ที่จำเป็น ได้แก่
- รายการช่องที่จะแสดงผลในออบเจ็กต์
GMSPlace
และ ที่เรียกว่าฟิลด์มาสก์ ตามที่กำหนดโดยGMSPlaceProperty
หากไม่ได้ระบุอย่างน้อย 1 ช่องในรายการช่อง หรือไม่ได้ระบุ รายการช่อง การเรียกจะแสดงข้อผิดพลาด - การค้นหาข้อความ
คำขอค้นหาข้อความในตัวอย่างนี้ระบุว่าออบเจ็กต์ GMSPlace
ของการตอบกลับ
มีชื่อสถานที่และรหัสสถานที่สำหรับออบเจ็กต์ GMSPlace
แต่ละรายการในการค้นหา
ผลลัพธ์ และยังกรองการตอบสนองเพื่อแสดงตำแหน่งประเภท
"ร้านอาหาร"
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; } } } ];
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
พร็อพเพอร์ตี้ที่ระบุฟิลด์ข้อมูลที่จะแสดง หากคุณเว้นช่องนี้ไว้ mask คำขอจะส่งกลับข้อผิดพลาดรายการช่องเป็นแนวทางปฏิบัติที่ดีในการออกแบบเพื่อให้คุณไม่ต้องขอ ข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาประมวลผลที่ไม่จำเป็น การเรียกเก็บเงินของคุณ
ระบุช่องต่อไปนี้อย่างน้อย 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
จำกัดผลการค้นหาเฉพาะตำแหน่งที่ตรงกับประเภทที่ระบุซึ่งกำหนดโดย ตาราง ก ระบุได้เพียงประเภทเดียวเท่านั้น เช่น
request.includedType = "bar"
request.includedType = "pharmacy"
isOpenNow
หากเป็น
true
ให้ส่งคืนเฉพาะสถานที่ที่เปิดให้บริการเท่านั้น ในเวลาที่มีการส่งคำถาม หากเป็นfalse
ให้ส่งคืนธุรกิจทั้งหมด โดยไม่คํานึงถึงสถานะเปิด สถานที่ที่ไม่ได้ระบุเวลาทำการในฐานข้อมูล Google สถานที่ แสดงผลหากคุณตั้งค่าพารามิเตอร์นี้เป็นfalse
isStrictTypeFiltering
ใช้กับพารามิเตอร์
includeType
เมื่อตั้งค่าเป็นtrue
เฉพาะสถานที่ที่ตรงกับประเภทที่ระบุโดย ระบบส่งกลับincludeType
หากตั้งค่าเป็น "เท็จ" คำตอบอาจมีตำแหน่งที่ไม่ตรงกับค่าเริ่มต้นได้ ประเภทที่ระบุlocationBias
ระบุพื้นที่ที่จะค้นหา ตำแหน่งนี้ก่อให้เกิดความลำเอียง ซึ่งหมายความว่า ผลลัพธ์ที่อยู่รอบๆ ตำแหน่งที่ระบุสามารถแสดงผลได้ รวมถึงผลลัพธ์ นอกพื้นที่ที่ระบุ
คุณสามารถระบุ
locationRestriction
หรือlocationBias
แต่ไม่ใช่ทั้ง 2 อย่าง ให้คิดว่าlocationRestriction
เป็นการระบุ ภูมิภาคที่ผลการค้นหาต้องอยู่ภายใน และlocationBias
เป็น ระบุภูมิภาคที่ผลลัพธ์ต้องอยู่ใกล้แต่สามารถอยู่ภายนอก พื้นที่นั้นระบุพื้นที่เป็นวิวพอร์ตสี่เหลี่ยมผืนผ้าหรือวงกลม
วงกลมกำหนดด้วยจุดศูนย์กลางและรัศมีเป็นเมตร รัศมี ต้องอยู่ระหว่าง 0.0 ถึง 50000.0 รัศมีเริ่มต้นคือ 0.0 เช่น
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
สี่เหลี่ยมผืนผ้าคือวิวพอร์ตละติจูด-ลองจิจูด ซึ่งแสดงเป็น อยู่ในแนวทแยงมุมตรงข้ามจุดต่ำและสูง จุดต่ำทำเครื่องหมายอยู่ทางตะวันตกเฉียงใต้ มุมของสี่เหลี่ยมผืนผ้า และจุดสูงแสดงถึงทิศตะวันออกเฉียงเหนือ ของสี่เหลี่ยมผืนผ้า
วิวพอร์ตถือว่าเป็น บริเวณที่ถูกปิด ซึ่งหมายความว่ามีอาณาเขตรวมอยู่ด้วย ขอบเขตของละติจูด ต้องอยู่ระหว่าง -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
เช่น
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
มีอาร์เรย์สูงสุด 5 ตัว
GMSPlaceReview
ออบเจ็กต์ ออบเจ็กต์ GMSPlaceReview
แต่ละรายการมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียนได้
หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือผู้เขียนด้วย
การระบุแหล่งที่มา
สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบที่ การระบุแหล่งที่มา