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

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

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

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

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

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

ส่งคำขอค้นหาข้อความโดยเรียกใช้ GMSPlacesClient searchByTextWithRequest: ผ่านออบเจ็กต์ GMSPlaceSearchByTextRequest ที่กำหนดพารามิเตอร์คำขอและวิธีเรียกกลับประเภท 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.locationRestriction = GMSPlaceRectangularLocationOption(
    CLLocationCoordinate2DMake(20, 30), CLLocationCoordinate2DMake(40, 50));
request.locationBias = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(20, 30), 2.0);

// Array to hold the places in the response
GMSPlace *_placeResults = [GMSPlace alloc];

// 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

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

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

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

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

  • isStrictTypeFiltering

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

  • locationBias

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

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

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

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

      request.locationBias =  GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(40.7, -74.0), 200.0)
      
    • สี่เหลี่ยมผืนผ้าคือวิวพอร์ตละติจูด-ลองจิจูดที่แสดงเป็นเส้นทแยงมุม 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 ช่วงละติจูดจะว่างเปล่า
  • 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 (จัดอันดับผลการค้นหาตามระยะทาง)
    • สำหรับการค้นหาที่ไม่เกี่ยวข้องกับหมวดหมู่ เช่น "เมาน์เทนวิว แคลิฟอร์เนีย" เราขอแนะนำให้คุณไม่ตั้งค่า rankPreference
  • regionCode

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

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

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

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

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

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

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