การค้นหาข้อความ (ใหม่) จะแสดงข้อมูลเกี่ยวกับชุดสถานที่ตามสตริง เช่น "พิซซ่าในนิวยอร์ก" หรือ "ร้านรองเท้าใกล้กับออตตาวา" หรือ "ถนนใหญ่ 123" บริการจะแสดงรายการสถานที่ที่ตรงกับสตริงข้อความและค่ากำหนดตำแหน่งที่ตั้งที่ตั้งไว้
บริการนี้มีประโยชน์อย่างยิ่งสำหรับการค้นหาที่อยู่ที่ไม่ชัดเจนในระบบอัตโนมัติ และคอมโพเนนต์ที่ไม่ใช่ที่อยู่ของสตริงอาจจับคู่กับธุรกิจและที่อยู่ได้ ตัวอย่างคำค้นหาที่อยู่ที่ไม่ชัดเจน ได้แก่ ที่อยู่ที่มีการจัดรูปแบบไม่ดี หรือคำขอที่มีองค์ประกอบที่ไม่ใช่ที่อยู่ เช่น ชื่อธุรกิจ คำขออย่างเช่นตัวอย่าง 2 รายการแรกอาจแสดงผลลัพธ์เป็น 0 เว้นแต่จะมีการตั้งค่าสถานที่ เช่น ภูมิภาค ข้อจำกัดด้านสถานที่ หรือความลำเอียงด้านสถานที่
การค้นหาข้อความ (ใหม่) คล้ายกับการค้นหาใกล้เคียง (ใหม่) ความแตกต่างหลักระหว่าง 2 ฟีเจอร์นี้คือ การค้นหาข้อความ (ใหม่) ให้คุณระบุสตริงการค้นหาแบบกำหนดเองได้ ขณะที่การค้นหาใกล้เคียง (ใหม่) กำหนดให้ต้องระบุพื้นที่ที่ต้องการค้นหา
"10 High Street, UK" หรือ "123 Main Street, US" | "High Street" หลายแห่งในสหราชอาณาจักร "Main Street" หลายแห่งในสหรัฐอเมริกา การค้นหาไม่แสดงผลลัพธ์ที่ต้องการ เว้นแต่จะมีการตั้งค่าข้อจำกัดตำแหน่ง |
"ChainRestaurant New York" | สถานที่ตั้ง "ChainRestaurant" หลายแห่งในนิวยอร์ก ไม่มีที่อยู่หรือแม้แต่ชื่อถนน |
"10 High Street, Escher UK" หรือ "123 Main Street, Pleasanton US" | มี "High Street" เพียงถนนเดียวในเมือง Escher ของสหราชอาณาจักร และ "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.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
ที่กําหนดการค้นหาตั้งค่าสตริงการค้นหาข้อความเป็น "อาหารมังสวิรัติรสเผ็ด"
กำหนดจำนวนสถานที่ตั้งสูงสุดของผลการค้นหาเป็น 10 แห่ง ค่าเริ่มต้นและค่าสูงสุดคือ 20
จำกัดพื้นที่การค้นหาให้อยู่ภายในสี่เหลี่ยมผืนผ้าที่กําหนดโดยพิกัดละติจูดและลองจิจูด ระบบจะไม่แสดงผลลัพธ์ที่ตรงกันนอกพื้นที่นี้
เพิ่ม
OnSuccessListener
และรับสถานที่ที่ตรงกันจากออบเจ็กต์SearchByTextResponse
คำตอบจากการค้นหาข้อความ
คลาส
SearchByTextResponse
แสดงการตอบกลับจากคําขอค้นหา ออบเจ็กต์ SearchByTextResponse
ประกอบด้วย
รายการออบเจ็กต์
Place
ที่แสดงสถานที่ที่ตรงกันทั้งหมด โดยมีออบเจ็กต์Place
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
ได้ที่เข้าถึงช่องข้อมูลออบเจ็กต์สถานที่
พารามิเตอร์ที่จำเป็น
พารามิเตอร์ที่จําเป็นสําหรับ
SearchByTextRequest
มีดังนี้
-
รายการช่อง
ระบุช่องข้อมูลสถานที่ที่จะแสดง ส่งรายการค่า
Place.Field
ที่ระบุฟิลด์ข้อมูลที่จะแสดงผล ไม่มีรายการช่องที่แสดงผลเริ่มต้นในการตอบกลับรายการช่องเป็นแนวทางปฏิบัติด้านการออกแบบที่ดีเพื่อให้คุณไม่ขอข้อมูลที่ไม่จำเป็น ซึ่งจะช่วยหลีกเลี่ยงเวลาในการประมวลผลและค่าบริการเรียกเก็บเงินที่ไม่จำเป็น
ระบุฟิลด์ต่อไปนี้อย่างน้อย 1 ฟิลด์
ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU การค้นหาข้อความ (รหัสเท่านั้น)
Place.Field.DISPLAY_NAME
,Place.Field.ID
,Place.Field.RESOURCE_NAME
ช่องต่อไปนี้จะทริกเกอร์ SKU การค้นหาข้อความ (พื้นฐาน)
Place.Field.ACCESSIBILITY_OPTIONS
,Place.Field.ADDRESS_COMPONENTS
,Place.Field.ADR_FORMAT_ADDRESS
,Place.Field.BUSINESS_STATUS
,Place.Field.FORMATTED_ADDRESS
,Place.Field.GOOGLE_MAPS_URI
,Place.Field.ICON_BACKGROUND_COLOR
,Place.Field.ICON_MASK_URL
,Place.Field.LOCATION
,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 การค้นหาข้อความ (ขั้นสูง)
Place.Field.CURRENT_OPENING_HOURS
,Place.Field.CURRENT_SECONDARY_OPENING_HOURS
Place.Field.INTERNATIONAL_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.WEBSITE_URI
ช่องต่อไปนี้จะทริกเกอร์ SKU การค้นหาข้อความ (แนะนำ)
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
-
การค้นหาข้อความ
สตริงข้อความที่จะค้นหา เช่น "restaurant", "123 Main Street" หรือ "สถานที่ท่องเที่ยวยอดนิยมในซานฟรานซิสโก" 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
ช่วงละติจูดจะว่างเปล่า
ต้องป้อนทั้งค่าต่ำสุดและค่าสูงสุด และช่องที่แสดงต้องไม่ว่างเปล่า วิวพอร์ตว่างเปล่าจะทำให้เกิดข้อผิดพลาด
เช่น ของวิวพอร์ตสี่เหลี่ยมผืนผ้า โปรดดูคำขอการค้นหาข้อความ
หากต้องการตั้งค่าพารามิเตอร์ความลำเอียงของสถานที่ ให้เรียกใช้เมธอด
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 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
ระบบจะแสดงเฉพาะสถานที่ที่ตรงกับประเภทที่ระบุโดยแอตทริบิวต์ประเภทรวม เมื่อเป็นfalse
ซึ่งเป็นค่าเริ่มต้น การตอบกลับอาจมีสถานที่ที่ไม่ตรงกับประเภทที่ระบุหากต้องการตั้งค่าพารามิเตอร์การกรองประเภทที่เข้มงวด ให้เรียกใช้เมธอด
setStrictTypeFiltering()
เมื่อสร้างออบเจ็กต์SearchByTextRequest