การค้นหาใกล้เคียง (ใหม่)

เลือกแพลตฟอร์ม Android iOS JavaScript บริการผ่านเว็บ

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

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

คำขอการค้นหาใกล้เคียง (ใหม่)

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

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

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

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

Swift

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

// Define the search area as a 500 meter diameter circle in San Francisco, CA.
let circularLocationRestriction = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500)

// Specify the fields to return in the GMSPlace object for each place in the response.
let placeProperties = [GMSPlaceProperty.name, GMSPlaceProperty.coordinate].map {$0.rawValue}

// Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return.
var request = GMSPlaceSearchNearbyRequest(locationRestriction: circularLocationRestriction, placeProperties: placeProperties)
let includedTypes = ["restaurant", "cafe"]
request.includedTypes = includedTypes

let callback: GMSPlaceSearchNearbyResultCallback = { [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().searchNearby(with: request, callback: callback)

Objective-C

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

// Define the search area as a 500 meter diameter circle in San Francisco, CA.
id<GMSPlaceLocationRestriction> circularLocation = GMSPlaceCircularLocationOption(CLLocationCoordinate2DMake(37.7937, -122.3965), 500);

// Create the GMSPlaceSearchNearbyRequest, specifying the search area and GMSPlace fields to return.
GMSPlaceSearchNearbyRequest *request = [[GMSPlaceSearchNearbyRequest alloc]
  initWithLocationRestriction:circularLocation
              placeProperties:@[ GMSPlacePropertyName, GMSPlacePropertyCoordinate ]];

// Set the place types to filter on.
NSArray<NSString *> *includedTypes = @[ @"restaurant", @"cafe" ];
request.includedTypes = [[NSMutableArray alloc] initWithArray:includedTypes];

[_placesClient searchNearbyWithRequest:request
  callback:^(NSArray<GMSPlace *> *_Nullable places, NSError *_Nullable error) {
    if (error != nil) {
      NSLog(@"An error occurred %@", [error localizedDescription]);
      return;
    } else {
        // Get list of places.
        _placeResults = places;
    }
  }
];

GooglePlacesSwift

let restriction = CircularCoordinateRegion(center: CLLocationCoordinate2DMake(37.7937, -122.3965), radius: 500)
let searchNearbyRequest = SearchNearbyRequest(
  locationRestriction: restriction,
  placeProperties: [ .name, .coordinate],
  includedTypes: [ .restaurant, .cafe ],
)
switch await placesClient.searchNearby(with: searchNearbyRequest) {
case .success(let places):
  // Handle places
case .failure(let placesError):
  // Handle error
}

การตอบกลับของการค้นหาในบริเวณใกล้เคียง

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

พร้อมด้วยฟิลด์ข้อมูล ออบเจ็กต์ GMSPlace ใน การตอบกลับจะมีฟังก์ชันสำหรับสมาชิกดังต่อไปนี้

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

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

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

  • รายการช่อง

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

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

    • ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU การค้นหาใกล้เคียง (พื้นฐาน):

      GMSPlacePropertyAddressComponents, GMSPlacePropertyBusinessStatus, GMSPlacePropertyCoordinate, GMSPlacePropertyFormattedAddress, GMSPlacePropertyName, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyPhotos, GMSPlacePropertyPlaceID, 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

    ตัวอย่างต่อไปนี้ส่งผ่านรายการ ค่าของช่อง เพื่อระบุว่าออบเจ็กต์ GMSPlace ที่แสดงผลตามคำขอประกอบด้วย ช่อง name และ placeID:

    Swift

    // Specify the place data types to return.
    let fields: [GMSPlaceProperty] = [.placeID, .name]
            

    Objective-C

    // Specify the place data types to return.
    NSArray<GMSPlaceProperty *> *fields = @[GMSPlacePropertyPlaceID, GMSPlacePropertyName];
            

    GooglePlacesSwift

    // Specify the place data types to return.
    let fields: [PlaceProperty] = [.placeID, .displayName]
            
  • locationRestriction

    GMSPlaceLocationRestriction กำหนดพื้นที่ที่จะค้นหา ซึ่งระบุเป็นวงกลม กำหนดด้วยจุดศูนย์กลางและ รัศมีเป็นเมตร รัศมีต้องอยู่ระหว่าง 0.0 ถึง 50000.0 รัศมีเริ่มต้นคือ 0.0 คุณต้องตั้งค่าในคำขอให้เป็นค่าที่มากกว่า 0.0

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

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

  • includeTypes/excludedTypes, includePrimaryTypes/excludedPrimaryTypes

    ให้คุณระบุรายการประเภทจากประเภท ใช้ตาราง A เพื่อกรอง ผลการค้นหา หมวดหมู่ข้อจำกัดแต่ละประเภทระบุได้สูงสุด 50 ประเภท

    สถานที่มีประเภทหลักได้เพียงประเภทเดียวจากประเภท ตาราง A ที่เชื่อมโยงกับ ได้ ตัวอย่างเช่น ประเภทหลักอาจเป็น "mexican_restaurant" หรือ "steak_house" ใช้ includedPrimaryTypesและexcludedPrimaryTypesเพื่อกรองผลลัพธ์ ประเภทหลักของสถานที่

    สถานที่แห่งหนึ่งสามารถมีค่าหลายค่าจากประเภทได้ ตาราง ก ที่เกี่ยวข้อง ตัวอย่างเช่น ร้านอาหารอาจมีประเภทต่อไปนี้ "seafood_restaurant" "restaurant" "food" "point_of_interest", "establishment" ใช้ includedTypes และ excludedTypes เพื่อกรองผลลัพธ์ในรายการประเภทที่เชื่อมโยงกับ สถานที่

    เมื่อคุณระบุประเภทหลักทั่วไป เช่น "restaurant" หรือ "hotel" คำตอบอาจมีสถานที่ที่มีประเภทหลักที่เฉพาะเจาะจงมากกว่า อันที่ระบุไว้ ตัวอย่างเช่น คุณกำหนดให้รวมประเภทหลัก "restaurant" คำตอบสามารถประกอบด้วยสถานที่ที่มีประเภทหลักเป็น "restaurant" แต่การตอบกลับอาจมีสถานที่ที่มีความเฉพาะเจาะจงมากขึ้น ประเภทหลัก เช่น "chinese_restaurant" หรือ "seafood_restaurant"

    หากระบุการค้นหาโดยมีข้อจำกัดหลายประเภท เฉพาะสถานที่ ที่เป็นไปตามข้อจำกัดทั้งหมดจะแสดงผล เช่น หากระบุ {"includedTypes": ["restaurant"], "excludedPrimaryTypes": ["steak_house"]} สถานที่ที่ส่งคืนให้บริการที่เกี่ยวข้องกับ "restaurant" แต่ไม่ได้ดำเนินการเป็นหลัก ในฐานะ "steak_house"

    includedTypes

    รายการประเภทสถานที่จาก ตาราง A ที่จะค้นหา หากละเว้นพารามิเตอร์นี้ ระบบจะแสดงผลตำแหน่งทุกประเภท

    excludedTypes

    รายการประเภทสถานที่จาก ตาราง A ที่จะยกเว้นจาก ค้นหา

    หากคุณระบุทั้ง includedTypes (เช่น "school") และพารามิเตอร์ excludedTypes (เช่น "primary_school") ในคำขอ ค่า คำตอบรวมสถานที่ที่ได้รับการจัดหมวดหมู่เป็น "school" แต่ไม่ได้เป็น "primary_school" คำตอบมีสถานที่ที่ตรงกับอย่างน้อย 1 แห่ง includedTypes และ ไม่มี ของ excludedTypes

    หากมีประเภทที่ขัดแย้งกัน เช่น ประเภทหนึ่งๆ ที่ปรากฏในทั้ง includedTypes และ excludedTypes ระบบจะแสดงข้อผิดพลาด INVALID_REQUEST

    includedPrimaryTypes

    รายการประเภทสถานที่หลักจาก ตาราง A ที่จะรวม ในการค้นหา

    excludedPrimaryTypes

    รายการประเภทสถานที่หลักจาก ตาราง A ที่จะยกเว้น จากการค้นหา

    หากมีประเภทหลักที่ขัดแย้งกัน เช่น ประเภทหนึ่งๆ ที่ปรากฏในทั้งสองประเภท includedPrimaryTypes และ excludedPrimaryTypes ระบบแสดงผลข้อผิดพลาด INVALID_ARGUMENT รายการ

  • maxResultCount

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

  • rankPreference

    ประเภทของการจัดอันดับที่จะใช้ หากไม่ระบุพารามิเตอร์นี้ ผลลัพธ์จะจัดอันดับตามความนิยม อาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้

    • .popularity (ค่าเริ่มต้น) จัดเรียงผลการค้นหาตามความนิยม
    • .distance จัดเรียงผลการค้นหาตามลำดับจากน้อยไปหามากตามระยะห่างจาก ตำแหน่งที่ระบุ
  • regionCode

    รหัสภูมิภาคที่ใช้ในการจัดรูปแบบการตอบกลับ ระบุเป็น ค่ารหัส CLDR แบบ 2 อักขระ ไม่มีค่าเริ่มต้น

    หากชื่อประเทศของช่อง formattedAddress ในคำตอบตรงกับ regionCode, รหัสประเทศไม่รวมอยู่ใน formattedAddress พารามิเตอร์นี้ไม่มีผลต่อ adrFormatAddress ซึ่งจะรวมประเทศเสมอ หรือใน shortFormattedAddress ซึ่งจะไม่รวมอยู่ด้วย

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

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

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

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

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