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

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

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

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

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

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

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

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

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

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

Swift

// Create the GMSPlaceSearchByTextRequest object.
let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.placeID].map {$0.rawValue}
let request = GMSPlaceSearchByTextRequest(textQuery:"pizza in New York", placeProperties:myProperties)
request.isOpenNow = true
request.includedType = "restaurant"
request.maxResultCount = 5
request.minRating = 3.5
request.rankPreference = .distance
request.isStrictTypeFiltering = true
request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)

// Array to hold the places in the response
var placeResults: [GMSPlace] = []

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
  }
  placeResults = results
}

GMSPlacesClient.shared().searchByText(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.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.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 (error != nil) {
        NSLog(@"An error occurred %@", [error localizedDescription]);
        return;
      } else {
        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 พร็อพเพอร์ตี้ที่ระบุฟิลด์ข้อมูลที่จะแสดง หากคุณเว้นช่องนี้ไว้ mask คำขอจะส่งกลับข้อผิดพลาด

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

    ระบุช่องต่อไปนี้อย่างน้อย 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

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

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

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

  • isStrictTypeFiltering

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

  • locationBias

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

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

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

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

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
      
    • สี่เหลี่ยมผืนผ้าคือวิวพอร์ตละติจูด-ลองจิจูด ซึ่งแสดงเป็น อยู่ในแนวทแยงมุมตรงข้ามจุดต่ำและสูง จุดต่ำทำเครื่องหมายอยู่ทางตะวันตกเฉียงใต้ มุมของสี่เหลี่ยมผืนผ้า และจุดสูงแสดงถึงทิศตะวันออกเฉียงเหนือ ของสี่เหลี่ยมผืนผ้า

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

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

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

    เช่น

    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 มีอาร์เรย์สูงสุด 5 ตัว GMSPlaceReview ออบเจ็กต์ ออบเจ็กต์ GMSPlaceReview แต่ละรายการมีการระบุแหล่งที่มาและการระบุแหล่งที่มาของผู้เขียนได้ หากแสดงรีวิวในแอป คุณต้องแสดงการระบุแหล่งที่มาหรือผู้เขียนด้วย การระบุแหล่งที่มา

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