การค้นหาข้อความ (ใหม่) จะแสดงข้อมูลเกี่ยวกับชุดสถานที่ตามสตริง (เช่น "พิซซ่าในนิวยอร์ก" หรือ "ร้านขายรองเท้าใกล้ออตตาวา" หรือ "123 ถนนเมน") บริการจะตอบกลับด้วยรายการสถานที่ที่ตรงกับสตริงข้อความและค่าความเอนเอียงของตำแหน่งที่ตั้งไว้
นอกเหนือจากพารามิเตอร์ที่จำเป็นแล้ว การค้นหาข้อความ (ใหม่) ยังรองรับการปรับแต่งคำค้นหาโดยใช้พารามิเตอร์ที่ไม่บังคับเพื่อให้ได้ผลลัพธ์ที่ดีขึ้น
การค้นหาข้อความ (ใหม่) คล้ายกับการค้นหาใกล้เคียง (ใหม่) ความแตกต่างหลักระหว่างการค้นหาข้อความ (ใหม่) กับการค้นหาใกล้เคียง (ใหม่) คือการค้นหาข้อความ (ใหม่) ช่วยให้คุณระบุสตริงการค้นหาที่กำหนดเองได้ ในขณะที่การค้นหาใกล้เคียง (ใหม่) ต้องระบุพื้นที่ที่ต้องการค้นหา
คำขอค้นหาข้อความ
คำขอค้นหาข้อความอยู่ในรูปแบบต่อไปนี้
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_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.DISPLAY_NAMEซึ่งหมายความว่าออบเจ็กต์- Placeในการตอบกลับ ที่แสดงสถานที่ที่ตรงกันแต่ละแห่งจะมีเฉพาะ 2 ฟิลด์ดังกล่าว
- ใช้ - SearchByTextRequest.Builderเพื่อสร้างออบเจ็กต์- SearchByTextRequestที่กําหนดการค้นหา- ตั้งค่าสตริงการค้นหาข้อความเป็น "Spicy Vegetarian Food" 
- ตั้งค่าจำนวนสถานที่ในผลลัพธ์สูงสุดเป็น 10 ค่าเริ่มต้นและค่าสูงสุดคือ 20 
- จำกัดพื้นที่ค้นหาเป็นสี่เหลี่ยมผืนผ้าที่กำหนดโดยพิกัดละติจูดและ ลองจิจูด ระบบจะไม่แสดงผลการค้นหาที่อยู่นอกพื้นที่นี้ 
 
- เพิ่ม - OnSuccessListenerแล้วรับสถานที่ที่ตรงกันจากออบเจ็กต์- SearchByTextResponse
คำตอบการค้นหาข้อความ
คลาส
SearchByTextResponse
แสดงการตอบกลับจากคำขอค้นหา ออบเจ็กต์ SearchByTextResponse
ประกอบด้วย
- รายการออบเจ็กต์ - Placeที่แสดงสถานที่ที่ตรงกันทั้งหมด โดยมีออบเจ็กต์- Place1 รายการต่อสถานที่ที่ตรงกัน 1 แห่ง
- ออบเจ็กต์ - Placeแต่ละรายการจะมีเฉพาะฟิลด์ที่กำหนดโดยรายการฟิลด์ ที่ส่งในคำขอ
เช่น ในคำขอ คุณกำหนดรายการฟิลด์เป็น
// Specify the list of fields to return. final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.DISPLAY_NAME);
ฟิลด์รายการนี้หมายความว่าออบเจ็กต์ Place แต่ละรายการในการตอบกลับจะมีเฉพาะรหัสสถานที่และชื่อของสถานที่ที่ตรงกันแต่ละแห่ง จากนั้นคุณจะใช้เมธอด Place.getId()
และ Place.getName() เพื่อเข้าถึงช่องเหล่านี้ในออบเจ็กต์ Place แต่ละรายการได้
ดูตัวอย่างเพิ่มเติมเกี่ยวกับการเข้าถึงข้อมูลในออบเจ็กต์ Place ได้ที่เข้าถึงฟิลด์ข้อมูลออบเจ็กต์ Place
พารามิเตอร์ที่จำเป็น
พารามิเตอร์ที่จำเป็นสำหรับ
SearchByTextRequest
คือ
- 
    รายการฟิลด์ระบุฟิลด์ข้อมูลสถานที่ที่จะส่งคืน ส่งรายการ Place.Fieldค่าที่ระบุช่องข้อมูลที่จะแสดงผล ไม่มีรายการเริ่มต้นของ ฟิลด์ที่ส่งคืนในการตอบกลับรายการฟิลด์เป็นแนวทางปฏิบัติในการออกแบบที่ดีเพื่อให้มั่นใจว่าคุณจะไม่ขอข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาในการประมวลผลที่ไม่จำเป็นและค่าเรียกเก็บเงิน ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง - ฟิลด์ต่อไปนี้จะทริกเกอร์ Text Search Essentials ID Only SKU - Place.Field.DISPLAY_NAME*
 * ใช้แทน- Place.Field.NAME(เลิกใช้งานแล้วในเวอร์ชัน 4.0)
 - Place.Field.ID
 - Place.Field.RESOURCE_NAME*
 * มีชื่อทรัพยากรสถานที่ในรูปแบบ- places/PLACE_ID
 ใช้- DISPLAY_NAMEเพื่อเข้าถึงชื่อข้อความของสถานที่
- ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU ของ Text Search Pro - Place.Field.ACCESSIBILITY_OPTIONS*
 ใช้แทน- Place.Field.WHEELCHAIR_ACCESSIBLE_ENTRANCE(เลิกใช้งานแล้ว)
 - Place.Field.ADDRESS_COMPONENTS
 - Place.Field.ADR_FORMAT_ADDRESS
 - Place.Field.BUSINESS_STATUS
 - Place.Field.FORMATTED_ADDRESS*
 ใช้แทน- Place.Field.ADDRESS(เลิกใช้งานแล้ว)
 - Place.Field.GOOGLE_MAPS_URI
 - Place.Field.ICON_BACKGROUND_COLOR
 - Place.Field.ICON_MASK_URL*
 ใช้แทน- Place.Field.ICON_URL(เลิกใช้งานแล้ว)
 - Place.Field.LOCATION*
 ใช้แทน- Place.Field.LAT_LNG(เลิกใช้งานแล้ว)
 - Place.Field.PHOTO_METADATAS
 - Place.Field.PLUS_CODE
 - Place.Field.PRIMARY_TYPE
 - Place.Field.PRIMARY_TYPE_DISPLAY_NAME
 - Place.Field.SHORT_FORMATTED_ADDRESS
 - Place.Field.SUB_DESTINATIONS
 - Place.Field.TYPES
 - Place.Field.UTC_OFFSET
 - Place.Field.VIEWPORT
- ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU ของ Text Search Enterprise - Place.Field.CURRENT_OPENING_HOURS
 - Place.Field.CURRENT_SECONDARY_OPENING_HOURS
 - Place.Field.INTERNATIONAL_PHONE_NUMBER*
 * ใช้แทน- Place.Field.PHONE_NUMBERซึ่งเลิกใช้งานแล้ว
 - Place.Field.NATIONAL_PHONE_NUMBER
 - Place.Field.OPENING_HOURS
 - Place.Field.PRICE_LEVEL
 - Place.Field.RATING
 - Place.Field.SECONDARY_OPENING_HOURS
 - Place.Field.USER_RATING_COUNT*
 * ใช้แทน- Place.Field.USER_RATINGS_TOTALซึ่ง เลิกใช้งานแล้ว
 - Place.Field.WEBSITE_URI
- ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU การค้นหาข้อความ Enterprise Plus - Place.Field.ALLOWS_DOGS
 - Place.Field.CURBSIDE_PICKUP
 - Place.Field.DELIVERY
 - Place.Field.DINE_IN
 - Place.Field.EDITORIAL_SUMMARY
 - Place.Field.EV_CHARGE_OPTIONS
 - Place.Field.FUEL_OPTIONS
 - Place.Field.GOOD_FOR_CHILDREN
 - Place.Field.GOOD_FOR_GROUPS
 - Place.Field.GOOD_FOR_WATCHING_SPORTS
 - Place.Field.LIVE_MUSIC
 - Place.Field.MENU_FOR_CHILDREN
 - Place.Field.OUTDOOR_SEATING
 - Place.Field.PARKING_OPTIONS
 - Place.Field.PAYMENT_OPTIONS
 - Place.Field.RESERVABLE
 - Place.Field.RESTROOM
 - Place.Field.REVIEWS
 - Place.Field.SERVES_BEER
 - Place.Field.SERVES_BREAKFAST
 - Place.Field.SERVES_BRUNCH
 - Place.Field.SERVES_COCKTAILS
 - Place.Field.SERVES_COFFEE
 - Place.Field.SERVES_DESSERT
 - 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(); 
- สี่เหลี่ยมผืนผ้าคือวิวพอร์ตละติจูด-ลองจิจูด ซึ่งแสดงเป็นจุดต่ำและจุดสูงที่อยู่ตรงข้ามกันในแนวทแยง 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ช่วงละติจูดจะว่าง
 - คุณต้องระบุทั้งค่าต่ำสุดและค่าสูงสุด และช่องที่แสดงต้องไม่ว่าง โดยวิวพอร์ตที่ว่างเปล่าจะทำให้เกิดข้อผิดพลาด - เช่น สำหรับ Viewport สี่เหลี่ยมผืนผ้า โปรดดู คำขอการค้นหาข้อความ - หากต้องการตั้งค่าพารามิเตอร์การเอนเอียงตามสถานที่ ให้เรียกใช้เมธอด - setLocationBias()เมื่อสร้างออบเจ็กต์- SearchByTextRequest
- หาก 
 
- การจำกัดสถานที่- ระบุพื้นที่ที่จะค้นหา ระบบจะไม่แสดงผลลัพธ์ที่อยู่นอกพื้นที่ที่ระบุ ระบุภูมิภาคเป็นวิวพอร์ตสี่เหลี่ยม ดูคำอธิบาย ของอคติทางตำแหน่ง เพื่อดูข้อมูลเกี่ยวกับการกำหนด Viewport - คุณระบุการจํากัดตําแหน่งหรือการเอนเอียงตามตําแหน่งได้ แต่จะระบุทั้ง 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 Places จะ แสดงขึ้นหากคุณตั้งค่าพารามิเตอร์นี้เป็น- false- หากต้องการตั้งค่าพารามิเตอร์เปิดอยู่ ให้เรียกใช้เมธอด - setOpenNow()เมื่อสร้างออบเจ็กต์- SearchByTextRequest
- 
    ระดับราคาโดยค่าเริ่มต้น ผลการค้นหาจะรวมสถานที่ที่ให้บริการในทุกระดับราคา หากต้องการจำกัดผลการค้นหาให้แสดงเฉพาะสถานที่ที่มีระดับราคาที่เฉพาะเจาะจง คุณสามารถส่งรายการค่าจำนวนเต็มที่สอดคล้องกับระดับราคาของสถานที่ที่ต้องการแสดงได้ - 1- สถานที่ให้บริการราคาไม่แพง
- 2- สถานที่ให้บริการในราคาระดับปานกลาง
- 3- สถานที่ให้บริการที่มีราคาสูง
- 4- สถานที่ให้บริการที่มีราคาแพงมาก
 หากต้องการตั้งค่าพารามิเตอร์ระดับราคา ให้เรียกใช้เมธอด setPriceLevels()เมื่อสร้างออบเจ็กต์SearchByTextRequest
- ค่ากำหนดการจัดอันดับ- ระบุวิธีจัดอันดับผลลัพธ์ในการตอบกลับตามประเภทของคำค้นหา ดังนี้ - สำหรับคำค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในนิวยอร์ก"
      SearchByTextRequest.RankPreference.RELEVANCE(จัดอันดับผลลัพธ์ตามความเกี่ยวข้องกับการค้นหา) จะเป็นค่าเริ่มต้น คุณตั้งค่ากำหนดการจัดอันดับเป็นSearchByTextRequest.RankPreference.RELEVANCEหรือSearchByTextRequest.RankPreference.DISTANCE(จัดอันดับผลลัพธ์ตามระยะทาง) ได้
- สําหรับการค้นหาที่ไม่ใช่หมวดหมู่ เช่น "เมาน์เทนวิว แคลิฟอร์เนีย" เราขอแนะนํา ให้คุณปล่อยพารามิเตอร์ค่ากําหนดอันดับไว้โดยไม่ต้องตั้งค่า
 - หากต้องการตั้งค่าพารามิเตอร์ค่ากำหนดอันดับ ให้เรียกใช้เมธอด - setRankPreference()เมื่อสร้างออบเจ็กต์- SearchByTextRequest
- สำหรับคำค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในนิวยอร์ก"
      
- รหัสภูมิภาค- รหัสภูมิภาคที่ใช้จัดรูปแบบการตอบกลับ โดยระบุเป็นค่า รหัส CLDR 2 อักขระ พารามิเตอร์นี้อาจส่งผลต่อความเอนเอียงของผลการค้นหาด้วย ไม่มีค่าเริ่มต้น - หากชื่อประเทศของช่องที่อยู่ในคำตอบตรงกับรหัสภูมิภาค ระบบจะละเว้นรหัสประเทศจากที่อยู่ - รหัส CLDR ส่วนใหญ่จะเหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นที่สำคัญบางประการ ตัวอย่างเช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ขณะที่รหัส ISO 3166-1 คือ "gb" (ในทางเทคนิคสำหรับ นิติบุคคลของ "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์นี้อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง - หากต้องการตั้งค่าพารามิเตอร์รหัสภูมิภาค ให้เรียกใช้เมธอด - setRegionCode()เมื่อสร้างออบเจ็กต์- SearchByTextRequest
- การกรองประเภทแบบเข้มงวด- ใช้กับพารามิเตอร์ประเภทการรวม เมื่อตั้งค่าเป็น - trueระบบจะแสดงเฉพาะสถานที่ที่ตรงกับประเภทที่ระบุโดย include type เท่านั้น เมื่อเป็น- falseซึ่งเป็นค่าเริ่มต้น คำตอบอาจมีสถานที่ที่ไม่ตรงกับประเภทที่ระบุ- หากต้องการตั้งค่าพารามิเตอร์การกรองประเภทที่เข้มงวด ให้เรียกใช้เมธอด - setStrictTypeFiltering()เมื่อสร้างออบเจ็กต์- SearchByTextRequest