ค้นหาข้อความ (ใหม่)

เลือกแพลตฟอร์ม: Android iOS JavaScript เว็บเซอร์วิส

การค้นหาข้อความ (ใหม่) จะแสดงข้อมูลเกี่ยวกับชุดสถานที่ตามสตริง เช่น "พิซซ่าในนิวยอร์ก" หรือ "ร้านรองเท้าใกล้กับออตตาวา" หรือ "ถนนใหญ่ 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