การค้นหาข้อความ (ใหม่) จะแสดงข้อมูลเกี่ยวกับชุดของ สถานที่ตามสตริง เช่น "พิซซ่าในกรุงเทพ" หรือ "ร้านรองเท้า ใกล้ออตตาวา" หรือ "123 Main Street" บริการตอบสนองด้วยรายการสถานที่ การจับคู่สตริงข้อความและความเอนเอียงของตำแหน่งใดๆ ที่ได้กำหนดไว้
บริการนี้มีประโยชน์มากในการทำให้ที่อยู่ที่คลุมเครือ คำค้นหาในระบบอัตโนมัติ และคอมโพเนนต์ที่ไม่ใช่ที่อยู่ของสตริงอาจตรงกับธุรกิจ ที่อยู่ ตัวอย่างของข้อความค้นหาที่อยู่ที่ไม่ชัดเจนคือที่อยู่ที่มีรูปแบบไม่ถูกต้อง หรือคำขอที่มีองค์ประกอบที่ไม่ใช่ที่อยู่ เช่น ชื่อธุรกิจ คำขอ เช่น 2 ตัวอย่างแรกอาจแสดงผลลัพธ์เป็นศูนย์ ยกเว้นสถานที่ — เช่น ภูมิภาค การจำกัดตำแหน่ง หรือการให้น้ำหนักพิเศษของตำแหน่ง —
การค้นหาข้อความ (ใหม่) คล้ายกับการค้นหาใกล้เคียง (ใหม่) องค์ประกอบหลัก ความแตกต่างระหว่างเครื่องมือทั้งสองก็คือการค้นหาข้อความ (ใหม่) จะช่วยให้คุณระบุสตริงการค้นหาที่กำหนดเองได้ในขณะที่การค้นหาใกล้เคียง (ใหม่) ต้องใช้ เฉพาะพื้นที่ที่ต้องการค้นหา
"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" | การค้นหานี้มีหมายเลขโทรศัพท์ แสดงผลการค้นหาหลายรายการสำหรับ ที่เชื่อมโยงกับหมายเลขโทรศัพท์นั้น |
คำขอค้นหาข้อความ
คำขอค้นหาข้อความจะอยู่ในรูปแบบดังนี้
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME); // Define latitude and longitude coordinates of the search area. LatLng southWest = new LatLng(37.38816277477739, -122.08813770258874); LatLng northEast = new LatLng(37.39580487866437, -122.07702325966572); // Use the builder to create a SearchByTextRequest object. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationRestriction(RectangularBounds.newInstance(southWest, northEast)).build(); // Call PlacesClient.searchByText() to perform the search. // Define a response handler to process the returned List of Place objects. placesClient.searchByText(searchByTextRequest) .addOnSuccessListener(response -> { List<Place> places = response.getPlaces(); });
ในตัวอย่างนี้ คุณจะ
ตั้งค่ารายการช่องให้รวมเฉพาะ
Place.Field.ID
และPlace.Field.NAME
ซึ่งหมายความว่าออบเจ็กต์Place
ในคำตอบที่แสดงการจับคู่แต่ละรายการ จะมีเพียง 2 ฟิลด์เท่านั้นใช้
SearchByTextRequest.Builder
เพื่อสร้างSearchByTextRequest
ที่กำหนดการค้นหาตั้งค่าสตริงการค้นหาเป็น "อาหารมังสวิรัติสไปซี่"
ตั้งค่าจำนวนตำแหน่งผลลัพธ์สูงสุดไว้ที่ 10 ตำแหน่ง ค่าเริ่มต้นและ สูงสุดคือ 20
จำกัดพื้นที่ที่ค้นหาเป็นสี่เหลี่ยมผืนผ้าซึ่งกำหนดด้วยละติจูดและ พิกัดลองจิจูด ระบบจะไม่แสดงผลรายการที่ตรงกันนอกพื้นที่นี้
เพิ่ม
OnSuccessListener
และรับสถานที่ที่ตรงกันจากSearchByTextResponse
ออบเจ็กต์
การตอบกลับการค้นหาข้อความ
SearchByTextResponse
คลาสจะแสดงการตอบกลับจากคำขอการค้นหา SearchByTextResponse
ออบเจ็กต์ประกอบด้วย:
รายการ
Place
ที่แสดงสถานที่ที่ตรงกันทั้งหมด โดยมี 1 รายการPlace
ออบเจ็กต์ต่อสถานที่ที่ตรงกันออบเจ็กต์
Place
แต่ละรายการจะมีเพียงช่องที่กำหนดโดยรายการช่องเท่านั้น ในคำขอ
ตัวอย่างเช่น คุณได้กำหนดรายการช่องในคำขอดังนี้
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);
รายการช่องนี้หมายความว่าออบเจ็กต์ Place
แต่ละรายการในการตอบกลับมีเฉพาะ
ชื่อสถานที่ และชื่อของสถานที่แต่ละแห่งที่ตรงกัน จากนั้นคุณสามารถใช้ Place.getId()
และ Place.getName()
วิธีในการเข้าถึงช่องเหล่านี้ในออบเจ็กต์ Place
แต่ละรายการ
สำหรับตัวอย่างเพิ่มเติมของการเข้าถึงข้อมูลในออบเจ็กต์ Place
โปรดดูการเข้าถึงสถานที่
ช่องข้อมูลออบเจ็กต์
พารามิเตอร์ที่จำเป็น
พารามิเตอร์ที่จำเป็นสำหรับ
SearchByTextRequest
ได้แก่
-
รายการช่อง
ระบุฟิลด์ข้อมูลสถานที่ที่จะแสดง ส่งรายการ
Place.Field
ซึ่งระบุฟิลด์ข้อมูลที่จะแสดง ไม่มีรายการเริ่มต้นของ แสดงผลฟิลด์ในคำตอบรายการช่องเป็นแนวทางปฏิบัติที่ดีในการออกแบบเพื่อให้คุณไม่ต้องขอ ข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาประมวลผลที่ไม่จำเป็น การเรียกเก็บเงินของคุณ
ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง
ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (รหัสเท่านั้น)
Place.Field.ID
,Place.Field.NAME
ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (พื้นฐาน)
Place.Field.ADDRESS_COMPONENTS
,Place.Field.BUSINESS_STATUS
,Place.Field.ADDRESS
,Place.Field.ICON_BACKGROUND_COLOR
,Place.Field.ICON_URL
,Place.Field.LAT_LNG
,Place.Field.PHOTO_METADATAS
Place.Field.PLUS_CODE
,Place.Field.TYPES
,Place.Field.UTC_OFFSET
,Place.Field.VIEWPORT
,Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE
ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (ขั้นสูง)
Place.Field.CURRENT_OPENING_HOURS
,Place.Field.SECONDARY_OPENING_HOURS
,Place.Field.PHONE_NUMBER
,Place.Field.PRICE_LEVEL
,Place.Field.RATING
,Place.Field.OPENING_HOURS
,Place.Field.USER_RATINGS_TOTAL
Place.Field.WEBSITE_URI
ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (ที่ต้องการ)
Place.Field.CURBSIDE_PICKUP
,Place.Field.DELIVERY
,Place.Field.DINE_IN
,Place.Field.EDITORIAL_SUMMARY
,Place.Field.RESERVABLE
,Place.Field.REVIEWS
,Place.Field.SERVES_BEER
Place.Field.SERVES_BREAKFAST
,Place.Field.SERVES_BRUNCH
,Place.Field.SERVES_DINNER
,Place.Field.SERVES_LUNCH
,Place.Field.SERVES_VEGETARIAN_FOOD
,Place.Field.SERVES_WINE
,Place.Field.TAKEOUT
หากต้องการตั้งค่าพารามิเตอร์รายการช่อง ให้เรียกเมธอด
setPlaceFields()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
-
การค้นหาข้อความ
สตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" "123 ถนนสุขุมวิท" หรือ "สถานที่ที่น่าไปที่สุดในเชียงใหม่" API จะแสดงผลการจับคู่คำที่รอการพิจารณาตามสตริงนี้และเรียงลำดับผลลัพธ์ตาม ถึงความเกี่ยวข้องที่รับรู้ได้
หากต้องการตั้งค่าพารามิเตอร์การค้นหาข้อความ ให้เรียกเมธอด
setTextQuery()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
พารามิเตอร์ที่ไม่บังคับ
ใช้เมนู
SearchByTextRequest
เพื่อระบุพารามิเตอร์ที่เป็นตัวเลือกสำหรับคำขอของคุณ
ประเภทที่รวม
จำกัดผลการค้นหาเฉพาะตำแหน่งที่ตรงกับประเภทที่ระบุซึ่งกำหนดโดย ตาราง ก ระบุได้เพียงประเภทเดียวเท่านั้น เช่น
setIncludedType("bar")
setIncludedType("pharmacy")
หากต้องการตั้งค่าพารามิเตอร์ประเภทที่รวม ให้เรียกเมธอด
setIncludedType()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
ความเอนเอียงของตำแหน่ง
ระบุพื้นที่ที่จะค้นหา ตำแหน่งนี้ก่อให้เกิดความลำเอียง ซึ่งหมายความว่า ผลลัพธ์ที่อยู่รอบๆ ตำแหน่งที่ระบุสามารถแสดงผลได้ รวมถึงผลลัพธ์ นอกพื้นที่ที่ระบุ
คุณสามารถระบุข้อจำกัดตำแหน่ง หรือการให้น้ำหนักพิเศษกับสถานที่ได้ แต่ไม่ใช่ทั้ง 2 อย่าง ให้คิดว่าการจำกัดการเข้าถึงสถานที่เป็นการระบุ ภูมิภาคที่ผลการค้นหาต้องอยู่ภายใน และความเอนเอียงของตำแหน่ง ระบุภูมิภาคที่ผลลัพธ์ต้องอยู่ใกล้แต่สามารถอยู่ภายนอก พื้นที่นั้น
ระบุพื้นที่เป็นวิวพอร์ตสี่เหลี่ยมผืนผ้าหรือวงกลม
วงกลมกำหนดด้วยจุดศูนย์กลางและรัศมีเป็นเมตร รัศมี ต้องอยู่ระหว่าง 0.0 ถึง 50000.0 เช่น
// Define latitude and longitude coordinates of the center of the search area. LatLng searchCenter = new LatLng(37.38816277477739, -122.08813770258874); // Use the builder to create a SearchByTextRequest object. // Set the radius of the search area to 500.0 meters. final SearchByTextRequest searchByTextRequest = SearchByTextRequest.builder("Spicy Vegetarian Food", placeFields) .setMaxResultCount(10) .setLocationBias(CircularBounds.newInstance(searchCenter, 500.0)).build();
สี่เหลี่ยมผืนผ้าคือวิวพอร์ตละติจูด-ลองจิจูด ซึ่งแสดงเป็น อยู่ในแนวทแยงมุมตรงข้ามจุดต่ำและสูง จุดต่ำทำเครื่องหมายอยู่ทางตะวันตกเฉียงใต้ มุมของสี่เหลี่ยมผืนผ้า และจุดสูงแสดงถึงทิศตะวันออกเฉียงเหนือ ของสี่เหลี่ยมผืนผ้า
วิวพอร์ตถือว่าเป็น บริเวณที่ถูกปิด ซึ่งหมายความว่ามีอาณาเขตรวมอยู่ด้วย ขอบเขตของละติจูด ต้องอยู่ระหว่าง -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
ไม่มีข้อมูลช่วงละติจูด
ต้องป้อนข้อมูลทั้ง "ต่ำ" และ "สูง" และไม่สามารถเลือก ว่างเปล่า วิวพอร์ตที่ว่างเปล่าจะทำให้เกิดข้อผิดพลาด
ตัวอย่างเช่น สำหรับวิวพอร์ตรูปสี่เหลี่ยมผืนผ้าจะเห็น คำขอการค้นหาข้อความ
หากต้องการตั้งค่าพารามิเตอร์ความเอนเอียงของตำแหน่ง ให้เรียกเมธอด
setLocationBias()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
- หาก
การจำกัดตำแหน่ง
ระบุพื้นที่ที่จะค้นหา ผลลัพธ์นอกพื้นที่ที่ระบุไม่ได้ ส่งคืนแล้ว ระบุพื้นที่เป็นวิวพอร์ตสี่เหลี่ยมผืนผ้า ดูคำอธิบาย ของความลำเอียงของตำแหน่ง สำหรับข้อมูลเกี่ยวกับการกำหนดวิวพอร์ต
คุณสามารถระบุข้อจำกัดตำแหน่ง หรือการให้น้ำหนักพิเศษกับสถานที่ได้ แต่ไม่ใช่ทั้ง 2 อย่าง ให้คิดว่าการจำกัดการเข้าถึงสถานที่เป็นการระบุ ภูมิภาคที่ผลลัพธ์ต้องอยู่ภายใน และความเอนเอียงของสถานที่ตั้ง ระบุภูมิภาคที่ผลลัพธ์ต้องอยู่ใกล้ แต่สามารถอยู่ภายนอกได้ พื้นที่นั้น
หากต้องการตั้งค่าพารามิเตอร์การจำกัดตำแหน่ง ให้เรียกเมธอด
setLocationRestriction()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
-
จำนวนผลลัพธ์สูงสุด
ระบุจำนวนสูงสุดของผลลัพธ์สถานที่ที่จะแสดง ต้องอยู่ระหว่าง 1 และ 20 (ค่าเริ่มต้น)
หากต้องการตั้งค่าพารามิเตอร์จำนวนผลลัพธ์สูงสุด ให้เรียกเมธอด
setMaxResultCount()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
คะแนนขั้นต่ำ
จำกัดผลการค้นหาให้แสดงเฉพาะผู้ที่มีคะแนนเฉลี่ยมากกว่า หรือเท่ากับขีดจำกัดนี้ ค่าต้องอยู่ระหว่าง 0.0 ถึง 5.0 (รวม) ทีละ 0.5 เช่น 0, 0.5, 1.0, ... , 5.0 ค่าต่างๆ ได้แก่ ปัดเศษขึ้นให้เป็นค่า 0.5 ที่ใกล้เคียงที่สุด เช่น ค่า 0.6 จะลบทั้งหมด ผลลัพธ์ที่มีคะแนนต่ำกว่า 1.0
หากต้องการตั้งค่าพารามิเตอร์การให้คะแนนขั้นต่ำ ให้เรียกเมธอด
setMinRating()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
เปิดอยู่
หากเป็น
true
ให้ส่งคืนเฉพาะสถานที่ที่เปิดให้บริการเท่านั้น ในเวลาที่มีการส่งคำถาม หากเป็นfalse
ให้ส่งคืนธุรกิจทั้งหมด โดยไม่คํานึงถึงสถานะเปิด สถานที่ที่ไม่ได้ระบุเวลาทำการในฐานข้อมูล Google สถานที่ แสดงผลหากคุณตั้งค่าพารามิเตอร์นี้เป็นfalse
หากต้องการตั้งค่าพารามิเตอร์ Open Now ให้เรียกเมธอด
setOpenNow()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
-
ระดับราคา
โดยค่าเริ่มต้น ผลการค้นหาจะรวมสถานที่ที่ให้บริการทุกระดับราคา เพื่อจำกัด ผลลัพธ์ให้รวมเฉพาะสถานที่ที่อยู่ในระดับราคาที่ระบุเท่านั้น คุณสามารถส่งรายการ ของค่าจำนวนเต็มที่ตรงกับระดับราคาสำหรับสถานที่ที่คุณต้องการแสดงผล ดังนี้
1
- สถานที่ให้บริการที่ไม่แพง2
- สถานที่ให้บริการในราคาปานกลาง3
- สถานที่ให้บริการที่มีค่าใช้จ่ายสูง4
- สถานที่ให้บริการที่มีราคาแพงมาก
หากต้องการตั้งค่าพารามิเตอร์ระดับราคา ให้เรียกเมธอด
setPriceLevels()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
อันดับที่ต้องการ
ระบุวิธีจัดอันดับผลลัพธ์ในการตอบกลับตามประเภทของ ข้อความค้นหา:
- สําหรับการค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในหัวหิน"
SearchByTextRequest.RankPreference.RELEVANCE
(จัดอันดับผลการค้นหาตามความเกี่ยวข้องของการค้นหา) เป็นค่าเริ่มต้น คุณตั้งค่ากำหนดอันดับเป็นSearchByTextRequest.RankPreference.RELEVANCE
หรือSearchByTextRequest.RankPreference.DISTANCE
(จัดอันดับผลการค้นหาตามระยะทาง) - สำหรับคำค้นหาที่ไม่ใช่หมวดหมู่ เช่น "Mountain View, CA" เราขอแนะนำ คุณไม่ต้องตั้งค่าพารามิเตอร์อันดับที่ต้องการ
หากต้องการตั้งค่าพารามิเตอร์ค่ากำหนดอันดับ ให้เรียกเมธอด
setRankPreference()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
- สําหรับการค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในหัวหิน"
รหัสภูมิภาค
รหัสภูมิภาคที่ใช้ในการจัดรูปแบบการตอบกลับ ระบุเป็น ค่ารหัส CLDR แบบ 2 อักขระ นอกจากนี้ พารามิเตอร์นี้อาจทำให้เกิดการให้น้ำหนักพิเศษด้วย ในผลการค้นหา ไม่มีค่าเริ่มต้น
ถ้าชื่อประเทศของฟิลด์ที่อยู่ในคำตอบตรงกับ รหัสภูมิภาค รหัสประเทศจะไม่แสดงในที่อยู่
รหัส CLDR ส่วนใหญ่เหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นบางประการเด่นๆ ตัวอย่างเช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ในขณะที่รหัส ISO 3166-1 คือ "gb" (โดยทางเทคนิคสำหรับ นิติบุคคล "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง
หากต้องการตั้งค่าพารามิเตอร์รหัสภูมิภาค ให้เรียกเมธอด
setRegionCode()
เมื่อสร้างออบเจ็กต์SearchByTextRequest
การกรองประเภทที่เข้มงวด
ใช้กับพารามิเตอร์ประเภทรวม เมื่อตั้งค่าเป็น
true
เฉพาะสถานที่ที่ตรงกับประเภทที่ระบุโดย แสดงประเภท "รวม" เมื่อfalse
คำตอบมีค่าเริ่มต้นเป็นตำแหน่ง ไม่ตรงกับประเภทที่ระบุหากต้องการตั้งค่าพารามิเตอร์การกรองประเภทแบบเข้มงวด ให้เรียกเมธอด
setStrictTypeFiltering()
เมื่อสร้างออบเจ็กต์SearchByTextRequest