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

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

บริการนี้มีประโยชน์อย่างยิ่งสำหรับการสืบค้นข้อมูลที่อยู่ที่คลุมเครือในระบบอัตโนมัติ และองค์ประกอบที่ไม่มีที่อยู่ของสตริงอาจตรงกับทั้งธุรกิจและที่อยู่ ตัวอย่างของการค้นหาที่อยู่ที่ไม่ชัดเจนคือที่อยู่ที่มีรูปแบบไม่ดีหรือคำขอที่มีองค์ประกอบที่ไม่มีที่อยู่ เช่น ชื่อธุรกิจ คำขออย่างเช่น 2 ตัวอย่างแรกอาจไม่แสดงผลลัพธ์เลย เว้นแต่จะมีการตั้งค่าตำแหน่ง (เช่น ภูมิภาค การจำกัดตำแหน่ง หรือการให้น้ำหนักพิเศษ)

"10 High Street, UK" หรือ "123 Main Street, US" "ถนน" หลายสายในสหราชอาณาจักร "ถนนหลัก" หลายสายในสหรัฐอเมริกา การค้นหาไม่แสดงผลการค้นหาที่ต้องการ เว้นแต่จะตั้งค่าการจํากัดตําแหน่งไว้
"ร้านอาหารแฟรนไชส์ในกรุงเทพ" สถานที่ตั้ง "ร้านอาหารแฟรนไชส์" หลายแห่งในนิวยอร์ก แต่ไม่มีที่อยู่หรือแม้แต่ชื่อถนน
"10 High Street, Escher UK" หรือ "123 Main Street, Pleasanton US" "High Street" เพียงแห่งเดียวในเมือง Escher ของสหราชอาณาจักร แต่มีเพียง "Main Street" เดียวในเมือง Pleasanton CA ของสหรัฐอเมริกา
"UniqueRestaurantName New York" มีสถานประกอบการเพียงแห่งเดียวที่ใช้ชื่อนี้ในนิวยอร์ก โดยไม่ต้องมีที่อยู่แยก
"ร้านพิซซ่าในหัวหิน" คำค้นหานี้มีการจำกัดตำแหน่ง และ "ร้านพิซซ่า" เป็น ประเภทสถานที่ที่กำหนดไว้อย่างชัดเจน แสดงผลการค้นหาหลายรายการ
"+1 514-670-8700"

การค้นหานี้มีหมายเลขโทรศัพท์ โดยจะแสดงผลการค้นหาหลายรายการสำหรับสถานที่ที่เชื่อมโยงกับหมายเลขโทรศัพท์นั้น

รับรายการสถานที่ด้วยการค้นหาข้อความ

ส่งคำขอการค้นหาข้อความโดยเรียกใช้ GMSPlacesClient searchByTextWithRequest: ส่งผ่านออบเจ็กต์ GMSPlaceSearchByTextRequest ที่กำหนดพารามิเตอร์คำขอและเมธอด Callback ประเภท GMSPlaceSearchByTextResultCallback เพื่อจัดการการตอบกลับ

ออบเจ็กต์ GMSPlaceSearchByTextRequest ระบุพารามิเตอร์ที่จำเป็นและไม่บังคับทั้งหมดสำหรับคำขอ พารามิเตอร์ที่จำเป็น ได้แก่

  • รายการช่องที่จะแสดงผลในออบเจ็กต์ GMSPlace หรือที่เรียกว่าฟิลด์มาสก์ ตามที่กำหนดโดย GMSPlaceProperty หากคุณไม่ระบุอย่างน้อย 1 ช่องในรายการช่อง หรือหากคุณไม่ได้ระบุรายการช่อง การเรียกใช้จะแสดงข้อผิดพลาด
  • การค้นหาข้อความ

คำขอค้นหาข้อความในตัวอย่างนี้ระบุว่าออบเจ็กต์ GMSPlace ของการตอบกลับมีชื่อสถานที่และรหัสสถานที่สำหรับออบเจ็กต์ GMSPlace แต่ละรายการในผลการค้นหา และยังกรองการตอบสนองต่อที่แสดงสถานที่ประเภท "ร้านอาหาร" เท่านั้นอีกด้วย

Swift

// Create the GMSPlaceSearchByTextRequest object.
let placeProperties: [GMSPlaceProperty] = [GMSPlacePropertyName, GMSPlacePropertyPlaceID];
let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York" placeProperties:placeProperties)
request.isOpenNow = true
request.includedType = "restaurant"
request.maxResultCount = 5
request.minRating = 3.5
request.rankPreference = .distance
request.isStrictTypeFiltering = true
request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
request.locationRestriction = GMSPlaceRectangularLocationOption(
      CLLocationCoordinate2D(latitude: 20, longitude: 30),
      CLLocationCoordinate2D(latitude: 40, longitude: 50)
)

// Array to hold the places in the response
placeResults = [];

let callback: GMSPlaceSearchByTextResultCallback = { [weak self] results, error in
  guard let self, error == nil else {
    if let error {
      print(error.localizedDescription)
    }
    return
  }
  guard let results = results as? [GMSPlace] else {
    return
  }
  self.placeResults = results
}

GMSPlacesClient.shared().searchByTextWithRequest(with: request, callback: callback)

Objective-C

// Create the GMSPlaceSearchByTextRequest object.
GMSPlaceSearchByTextRequest *request =
    [[GMSPlaceSearchByTextRequest alloc] initWithTextQuery:@"pizza in New York" placeProperties:@[GMSPlacePropertyName, GMSPlacePropertyPlaceID]];
request.isOpenNow = YES;
request.includedType = @"restaurant";
request.maxResultCount = 5;
request.minRating = 3.5;
request.rankPreference = GMSPlaceSearchByTextRankPreferenceDistance;
request.isStrictTypeFiltering = YES;
request.priceLevels = @[ @(kGMSPlacesPriceLevelFree), @(kGMSPlacesPriceLevelCheap) ];
request.locationRestriction = GMSPlaceRectangularLocationOption(
    CLLocationCoordinate2DMake(20, 30), CLLocationCoordinate2DMake(40, 50));
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(20, 30), 2.0);

// Array to hold the places in the response
_placeResults = [NSArray array];

// Create the GMSPlaceSearchByTextRequest object.
[_placesClient searchByTextWithRequest:request
    callback:^(NSArray<GMSPlace *> _Nullable placeResults, NSError * _Nullable error) {
  if (placeResults.count > 0) {
      // Get list of places.
      _placeResults = placeResults;
  }
}];

GooglePlacesSwift

let restriction = RectangularLocationRestriction(
      northEast: CLLocationCoordinate2D(latitude: 20, longitude: 30),
      southWest: CLLocationCoordinate2D(latitude: 40, longitude: 50)
)
let searchByTextRequest = SearchByTextRequest(
        textQuery: "pizza in New York",
        placeProperties: [ .name, .placeID ],
        locationRestriction: restriction,
        includedType: .restaurant,
        maxResultCount: 5,
        minRating: 3.5,
        priceLevels: [ .moderate, .inexpensive ],
        isStrictTypeFiltering: true
)
switch await placesClient.searchByText(with: searchByTextRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

การตอบกลับการค้นหาข้อความ

Text Search API จะแสดงผลอาร์เรย์ของรายการที่ตรงกันในรูปแบบของออบเจ็กต์ GMSPlace โดยมีออบเจ็กต์ GMSPlace 1 รายการต่อตำแหน่งที่ตรงกัน

นอกเหนือจากช่องข้อมูลแล้ว ออบเจ็กต์ GMSPlace ในคำตอบมีฟังก์ชันสมาชิกต่อไปนี้

  • isOpen คํานวณว่าสถานที่นั้นๆ เปิดในเวลาที่ระบุหรือไม่
  • isOpenAtDate คำนวณว่าสถานที่เปิดในวันที่ที่ระบุหรือไม่

พารามิเตอร์ที่จำเป็น

ใช้ออบเจ็กต์ GMSPlaceSearchByTextRequest เพื่อระบุพารามิเตอร์ที่จำเป็นสำหรับการค้นหา

  • รายการช่อง

    ระบุพร็อพเพอร์ตี้ข้อมูลสถานที่ที่จะแสดง ส่งรายการพร็อพเพอร์ตี้ GMSPlace ที่ระบุช่องข้อมูลที่ต้องการแสดง หากคุณไม่มาสก์ช่อง คำขอจะแสดงข้อผิดพลาด

    รายการช่องเป็นแนวทางปฏิบัติที่ดีในการออกแบบเพื่อให้มั่นใจว่าคุณไม่ได้ขอข้อมูลที่ไม่จำเป็น ซึ่งช่วยหลีกเลี่ยงเวลาในการประมวลผลและการเรียกเก็บเงินที่ไม่จำเป็น

    ระบุช่องต่อไปนี้อย่างน้อย 1 ช่อง

    • ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (รหัสเท่านั้น)

      GMSPlacePropertyPlaceID, GMSPlacePropertyName
    • ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (พื้นฐาน)

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyFormattedAddress, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyCoordinate, GMSPlacePropertyPhotos, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyViewport, GMSPlacePropertyWheelchairAccessibleEntrance
    • ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (ขั้นสูง)

      GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite
    • ช่องต่อไปนี้จะเรียกใช้ SKU การค้นหาข้อความ (ที่ต้องการ)

      GMSPlacePropertyCurbsidePickup, GMSPlacePropertyDelivery, GMSPlacePropertyDineIn, GMSPlacePropertyEditorialSummary, GMSPlacePropertyReservable, GMSPlacePropertyReviews, GMSPlacePropertyServesBeer, GMSPlacePropertyServesBreakfast, GMSPlacePropertyServesBrunch, GMSPlacePropertyServesDinner, GMSPlacePropertyServesLunch, GMSPlacePropertyServesVegetarianFood, GMSPlacePropertyServesWine, GMSPlacePropertyTakeout
  • textQuery

    สตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" "123 ถนนสุขุมวิท" หรือ "สถานที่ที่น่าไปที่สุดในเชียงใหม่"

พารามิเตอร์ที่ไม่บังคับ

ใช้ออบเจ็กต์ GMSPlaceSearchByTextRequest เพื่อระบุพารามิเตอร์ที่ไม่บังคับสำหรับการค้นหา

  • includedType

    จำกัดผลการค้นหาเฉพาะสถานที่ที่ตรงกับประเภทที่ระบุซึ่งกำหนดโดยตาราง A ระบุได้เพียงประเภทเดียวเท่านั้น เช่น

    • request.includedType = "bar"
    • request.includedType = "pharmacy"
  • isOpenNow

    หากเป็น true ให้แสดงผลเฉพาะสถานที่ที่เปิดให้บริการเท่านั้นในขณะที่มีการส่งคำค้นหา หากเป็น false ให้แสดงผลธุรกิจทั้งหมดโดยไม่คำนึงถึงสถานะเปิด ระบบจะแสดงผลสถานที่ที่ไม่ระบุเวลาทำการในฐานข้อมูล Google Places หากคุณตั้งค่าพารามิเตอร์นี้เป็น false

  • isStrictTypeFiltering

    ใช้กับพารามิเตอร์ includeType เมื่อตั้งค่าเป็น true ระบบจะแสดงเฉพาะสถานที่ซึ่งตรงกับประเภทที่ระบุโดย includeType เมื่อเป็นเท็จ คำตอบอาจมีตำแหน่งที่ไม่ตรงกับประเภทที่ระบุโดยค่าเริ่มต้น

  • locationBias

    ระบุพื้นที่ที่จะค้นหา ตำแหน่งนี้ถือเป็นการให้น้ำหนักพิเศษ ซึ่งหมายความว่าระบบแสดงผลการค้นหารอบๆ ตำแหน่งที่ระบุได้ รวมถึงผลการค้นหานอกพื้นที่ที่ระบุ

    คุณจะระบุ locationRestriction หรือ locationBias ได้ แต่ระบุทั้ง 2 อย่างไม่ได้ ให้คิดว่า locationRestriction เป็นการระบุภูมิภาคที่ผลการค้นหาต้องอยู่ภายใน และ locationBias เป็นการระบุภูมิภาคที่ผลการค้นหาต้องอยู่ใกล้เคียงแต่อยู่นอกพื้นที่ได้

    ระบุพื้นที่เป็นวิวพอร์ตสี่เหลี่ยมผืนผ้าหรือวงกลม

    • วงกลมกำหนดด้วยจุดศูนย์กลางและรัศมีเป็นเมตร รัศมีต้องอยู่ระหว่าง 0.0 ถึง 50000.0 รัศมีเริ่มต้นคือ 0.0 เช่น

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(latitude: 20, longitude: 30), radius: 2.0)
      
    • สี่เหลี่ยมผืนผ้าเป็นวิวพอร์ตละติจูด-ลองจิจูด ซึ่งแสดงในแนวทแยงมุม 2 ตรงข้ามกับจุดต่ำและสูง จุดต่ำจะทำเครื่องหมายมุมตะวันตกเฉียงใต้ของสี่เหลี่ยมผืนผ้า ส่วนจุดสูงแสดงถึงมุมตะวันออกเฉียงเหนือของสี่เหลี่ยมผืนผ้า

      วิวพอร์ตจะถือเป็นภูมิภาคปิด ซึ่งหมายความว่ามีอาณาเขตรวมอยู่ด้วย ขอบเขตของละติจูดต้องอยู่ระหว่าง -90 ถึง 90 องศา และขอบเขตของลองจิจูดต้องอยู่ระหว่าง -180 ถึง 180 องศา (รวม - 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 ช่วงละติจูดจะว่างเปล่า
  • locationRestriction

    ระบุพื้นที่ที่จะค้นหา ไม่มีการแสดงผลลัพธ์นอกพื้นที่ที่ระบุ ระบุพื้นที่เป็นวิวพอร์ตสี่เหลี่ยมผืนผ้า ดูข้อมูลเกี่ยวกับการกำหนดวิวพอร์ตในคำอธิบาย locationBias

    คุณจะระบุ locationRestriction หรือ locationBias ได้ แต่ระบุทั้ง 2 อย่างไม่ได้ ให้คิดว่า locationRestriction เป็นการระบุภูมิภาคที่ผลการค้นหาต้องอยู่ภายใน และ locationBias เป็นการระบุภูมิภาคที่ผลการค้นหาต้องอยู่ใกล้เคียงแต่อยู่นอกพื้นที่ได้

  • maxResultCount

    ระบุจำนวนสูงสุดของผลลัพธ์สถานที่ที่จะแสดง ต้องอยู่ระหว่าง 1 ถึง 20 (ค่าเริ่มต้น)

  • minRating

    จำกัดผลการค้นหาให้แสดงเฉพาะผลลัพธ์ของผู้ใช้ที่มีคะแนนเฉลี่ยมากกว่าหรือเท่ากับขีดจำกัดนี้ ค่าต้องอยู่ระหว่าง 0.0 ถึง 5.0 (รวม) โดยเพิ่มขึ้นทีละ 0.5 เช่น 0, 0.5, 1.0, ... , 5.0 ระบบจะปัดเศษค่าขึ้นให้เป็นค่า 0.5 ที่ใกล้เคียงที่สุด เช่น ค่า 0.6 จะลบผลลัพธ์ทั้งหมดที่มีคะแนนต่ำกว่า 1.0

  • priceLevels

    จำกัดการค้นหาไว้เฉพาะสถานที่ที่มีการทำเครื่องหมายไว้ที่ระดับราคาบางระดับ ค่าเริ่มต้นคือเลือกระดับราคาทั้งหมด

    ระบุอาร์เรย์ของค่าที่ PriceLevel กำหนดอย่างน้อย 1 ค่า

    เช่น

    request.priceLevels = [GMSPlacesPriceLevel.moderate.rawValue, GMSPlacesPriceLevel.cheap.rawValue]
  • rankPreference

    ระบุวิธีจัดอันดับผลการค้นหาในการตอบกลับตามประเภทของคำค้นหา ดังนี้

    • สําหรับคําค้นหาตามหมวดหมู่ เช่น "ร้านอาหารในเชียงใหม่" .relevance (จัดอันดับผลการค้นหาตามความเกี่ยวข้องของการค้นหา) จะเป็นค่าเริ่มต้น คุณสามารถตั้งค่า rankPreference เป็น .relevance หรือ .distance (จัดอันดับผลการค้นหาตามระยะทาง)
    • สําหรับการค้นหาที่ไม่ใช่หมวดหมู่ เช่น "Mountain View, CA" เราขอแนะนําให้ไม่ตั้งค่า rankPreference
  • regionCode

    รหัสภูมิภาคที่ใช้ในการจัดรูปแบบการตอบกลับ ซึ่งระบุเป็นค่า รหัส CLDR แบบ 2 อักขระ พารามิเตอร์นี้อาจทำให้เกิดการให้น้ำหนักพิเศษกับผลการค้นหาได้เช่นกัน ไม่มีค่าเริ่มต้น

    หากชื่อประเทศของฟิลด์ที่อยู่ในการตอบกลับตรงกับรหัสภูมิภาค รหัสประเทศจะไม่แสดงในที่อยู่

    รหัส CLDR ส่วนใหญ่จะเหมือนกับรหัส ISO 3166-1 โดยมีข้อยกเว้นที่สำคัญบางประการ เช่น ccTLD ของสหราชอาณาจักรคือ "uk" (.co.uk) ขณะที่รหัส ISO 3166-1 คือ "gb" (ทางเทคนิคสำหรับเอนทิตีของ "สหราชอาณาจักรบริเตนใหญ่และไอร์แลนด์เหนือ") พารามิเตอร์อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง

แสดงการระบุแหล่งที่มาในแอปของคุณ

เมื่อแอปแสดงข้อมูลที่ได้รับจาก GMSPlacesClient เช่น รูปภาพและรีวิว แอปต้องแสดงการระบุแหล่งที่มาที่จำเป็นด้วย

เช่น พร็อพเพอร์ตี้ reviews ของออบเจ็กต์ GMSPlacesClient มีอาร์เรย์ของออบเจ็กต์ GMSPlaceReview สูงสุด 5 รายการ ออบเจ็กต์ GMSPlaceReview แต่ละรายการมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียนได้ หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือการระบุแหล่งที่มาของผู้เขียนด้วย

สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารเกี่ยวกับการระบุแหล่งที่มา