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

เลือกแพลตฟอร์ม: Android iOS JavaScript Web Service

นักพัฒนาแอปในเขตเศรษฐกิจยุโรป (EEA)

การค้นหาข้อความ (ใหม่) จะแสดงข้อมูลเกี่ยวกับชุดสถานที่ตามสตริง (เช่น "พิซซ่าในนิวยอร์ก" หรือ "ร้านขายรองเท้าใกล้ออตตาวา" หรือ "123 ถนนเมน") บริการจะตอบกลับด้วยรายการสถานที่ที่ตรงกับสตริงข้อความและค่าความเอนเอียงของตำแหน่งที่ตั้งไว้

นอกเหนือจากพารามิเตอร์ที่จำเป็นแล้ว การค้นหาข้อความ (ใหม่) ยังรองรับการปรับแต่งคำค้นหาโดยใช้พารามิเตอร์ ที่ไม่บังคับเพื่อให้ได้ผลลัพธ์ที่ดีขึ้น

การค้นหาด้วยข้อความ (ใหม่) คล้ายกับการค้นหาใกล้เคียง (ใหม่) ความแตกต่างหลักระหว่างการค้นหาทั้ง 2 แบบคือการค้นหาข้อความ (ใหม่) ช่วยให้คุณระบุสตริงการค้นหาที่กำหนดเองได้ ในขณะที่การค้นหาใกล้เคียง (ใหม่) ต้องระบุ พื้นที่ที่ต้องการค้นหา

คำขอค้นหาข้อความ

คำขอการค้นหาข้อความอยู่ในรูปแบบต่อไปนี้

// 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 ที่แสดงสถานที่ที่ตรงกันทั้งหมด โดยมีออบเจ็กต์ Place 1 รายการต่อสถานที่ที่ตรงกัน 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