รายละเอียดสถานที่ (ใหม่)

เลือกแพลตฟอร์ม: Android iOS JavaScript เว็บเซอร์วิส

Places SDK สําหรับ iOS (ใหม่) จะให้ข้อมูลเชิงลึกเกี่ยวกับสถานที่แก่แอปของคุณ ซึ่งรวมถึงชื่อและที่อยู่ของสถานที่ ตําแหน่งทางภูมิศาสตร์ที่ระบุเป็นพิกัดละติจูด/ลองจิจูด ประเภทสถานที่ (เช่น ไนท์คลับ ร้านค้าสัตว์เลี้ยง พิพิธภัณฑ์) และอื่นๆ หากต้องการเข้าถึงข้อมูลนี้สำหรับสถานที่หนึ่งๆ ให้ใช้รหัสสถานที่ ซึ่งเป็นตัวระบุที่คงที่ซึ่งระบุสถานที่หนึ่งๆ ได้อย่างไม่ซ้ำกัน

ดูรายละเอียดสถานที่

คลาส GMSPlace มีข้อมูลเกี่ยวกับสถานที่หนึ่งๆ รวมถึงช่องข้อมูลทั้งหมดที่แสดงในช่องข้อมูลสถานที่ (ใหม่) รับออบเจ็กต์ GMSPlace โดยเรียกใช้ GMSPlacesClient fetchPlaceWithRequest: โดยส่งออบเจ็กต์ GMSFetchPlaceRequest และเมธอดการเรียกกลับประเภท GMSPlaceResultCallback

ออบเจ็กต์ GMSFetchPlaceRequest จะระบุข้อมูลต่อไปนี้

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

ส่งคำขอรายละเอียดสถานที่

ตัวอย่างนี้จะรับสถานที่ตามรหัสโดยส่งพารามิเตอร์ต่อไปนี้

  • รหัสสถานที่ตั้งของ ChIJV4k8_9UodTERU5KXbkYpSYs
  • รายการช่องที่ระบุให้แสดงชื่อสถานที่และ URL ของเว็บไซต์
  • GMSPlaceResultCallback เพื่อจัดการผลลัพธ์

API จะเรียกใช้เมธอด Callback ที่ระบุโดยส่งออบเจ็กต์ GMSPlace หากไม่พบสถานที่ ออบเจ็กต์สถานที่จะเป็นค่าว่าง

Swift

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Specify the place data types to return.
let myProperties = [GMSPlaceProperty.name, GMSPlaceProperty.website].map {$0.rawValue}

// Create the GMSFetchPlaceRequest object.
let fetchPlaceRequest = GMSFetchPlaceRequest(placeID: placeID, placeProperties: myProperties, sessionToken: nil)

client.fetchPlace(with: fetchPlaceRequest, callback: {
  (place: GMSPlace?, error: Error?) in
  guard let place, error == nil else { return }
  print("Place found: \(String(describing: place.name))")
})

Objective-C

// A hotel in Saigon with an attribution.
NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs";

// Specify the place data types to return.
NSArray<NSString *> *myProperties = @[GMSPlacePropertyName, GMSPlacePropertyWebsite];

// Create the GMSFetchPlaceRequest object.
GMSFetchPlaceRequest *fetchPlaceRequest = [[GMSFetchPlaceRequest alloc] initWithPlaceID:placeID placeProperties: myProperties sessionToken:nil];

[placesClient fetchPlaceWithRequest: fetchPlaceRequest callback: ^(GMSPlace *_Nullable place, NSError *_Nullable error) {
    if (error != nil) {
      NSLog(@"An error occurred %@", [error localizedDescription]);
      return;
    } else {
    NSLog(@"Place Found: %@", place.name);
    NSLog(@"The place URL: %@", place.website);
  }
}];

Places Swift SDK สำหรับ iOS (เวอร์ชันตัวอย่าง)

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
let fetchPlaceRequest = FetchPlaceRequest(
  placeID: placeID,
  placeProperties: [.name, .website]
)
switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
case .success(let place):
  // Handle place
case .failure(let placesError):
  // Handle error
}

การตอบกลับรายละเอียดสถานที่

รายละเอียดสถานที่จะแสดงออบเจ็กต์ GMSPlace ที่มีรายละเอียดเกี่ยวกับสถานที่ ระบบจะป้อนข้อมูลเฉพาะในช่องที่ระบุไว้ในรายการช่องลงในออบเจ็กต์ GMSPlace

รับสถานะเปิด

ออบเจ็กต์ GMSPlacesClient มีฟังก์ชันสมาชิกชื่อ isOpenWithRequest (isOpenRequest ใน Swift และ isPlaceOpenRequest ใน GooglePlacesSwift) ซึ่งแสดงผลลัพธ์ที่ระบุว่าสถานที่เปิดอยู่หรือไม่ ณ เวลาที่มีการเรียกใช้

เมธอดนี้ใช้อาร์กิวเมนต์ประเภท GMSPlaceIsOpenWithRequest รายการเดียวที่มีข้อมูลต่อไปนี้

  • ออบเจ็กต์ GMSPlace หรือสตริงที่ระบุรหัสสถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างออบเจ็กต์สถานที่ที่มีฟิลด์ที่จำเป็นได้ที่รายละเอียดสถานที่
  • ออบเจ็กต์ NSDate (Obj-C) หรือ Date (Swift) ไม่บังคับซึ่งระบุเวลาที่คุณต้องการตรวจสอบ หากไม่ได้ระบุเวลา ค่าเริ่มต้นจะเป็นปัจจุบัน
  • วิธีการ GMSPlaceOpenStatusResponseCallback ในการจัดการการตอบกลับ
  • >

เมธอด GMSPlaceIsOpenWithRequest กำหนดให้ต้องตั้งค่าฟิลด์ต่อไปนี้ในแออบเจ็กต์ GMSPlace

  • GMSPlacePropertyUTCOffsetMinutes
  • GMSPlacePropertyBusinessStatus
  • GMSPlacePropertyOpeningHours
  • GMSPlacePropertyCurrentOpeningHours
  • GMSPlacePropertySecondaryOpeningHours

หากไม่มีฟิลด์เหล่านี้ในออบเจ็กต์สถานที่ หรือหากคุณส่งรหัสสถานที่ เมธอดจะใช้ GMSPlacesClient GMSFetchPlaceRequest: เพื่อดึงข้อมูล

การตอบกลับ isOpenWithRequest รายการ

isOpenWithRequest จะแสดงผลออบเจ็กต์ GMSPlaceIsOpenResponse ที่มีค่าบูลีนชื่อ status ซึ่งระบุว่าธุรกิจเปิด ปิด หรือไม่ทราบสถานะ

ภาษา ค่าหากเปิด ค่าหากปิดอยู่ ค่าในกรณีที่ไม่ทราบสถานะ
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown
GooglePlacesSwift (เวอร์ชันตัวอย่าง) true false nil

การเรียกเก็บเงินสำหรับ isOpenWithRequest

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

ตัวอย่าง: ส่งคําขอ GMSPlaceIsOpenWithRequest

ตัวอย่างต่อไปนี้แสดงวิธีเริ่มต้น GMSPlaceIsOpenWithRequest ภายในออบเจ็กต์ GMSPlace ที่มีอยู่

Swift

    let isOpenRequest = GMSPlaceIsOpenRequest(place: place, date: nil)
      GMSPlacesClient.shared().isOpen(with: isOpenRequest) { response, error in
        if let error = error {
          // Handle Error
        }
        switch response.status {
          case .open:
            // Handle open
          case .closed:
            // Handle closed
          case .unknown:
            // Handle unknown
        }
      }
        

Objective-C

          GMSPlaceIsOpenRequest *isOpenRequest = [[GMSPlaceIsOpenRequest alloc] initWithPlace:place date:nil];
  
          [[GMSPlacesClient sharedClient] isOpenWithRequest:isOpenRequest callback:^(GMSPlaceIsOpenResponse response, NSError *_Nullable error) {
            if (error) {
              // Handle error
            }
  
            switch (response.status) {
              case GMSPlaceOpenStatusOpen:
                // Handle open
              case GMSPlaceOpenStatusClosed:
                // Handle closed
              case GMSPlaceOpenStatusUnknown:
                // Handle unknown
            }
          }];
          

GooglePlacesSwift

          let isOpenRequest = IsPlaceOpenRequest(place: place)
          switch await placesClient.isPlaceOpen(with: isOpenRequest) {
            case .success(let isOpenResponse):
              switch isOpenResponse.status {
                case true:
                  // Handle open
                case false:
                  // Handle closed
                case nil:
                  // Handle unknown
            case .failure(let placesError):
              // Handle error
          }
          

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

ใช้ออบเจ็กต์ GMSFetchPlaceRequest เพื่อระบุพารามิเตอร์ที่จําเป็น

รหัสสถานที่

รหัสสถานที่ที่ใช้ใน Places SDK สําหรับ iOS เป็นตัวระบุเดียวกับที่ใช้ใน Places API, Places SDK สําหรับ Android และ API อื่นๆ ของ Google รหัสสถานที่แต่ละรหัสจะอ้างอิงถึงสถานที่ได้เพียงแห่งเดียว แต่สถานที่แห่งเดียวอาจมีรหัสสถานที่ได้มากกว่า 1 รหัส

มีบางสถานการณ์ที่อาจทําให้สถานที่ได้รับรหัสสถานที่ใหม่ ตัวอย่างเช่น กรณีนี้อาจเกิดขึ้นหากธุรกิจย้ายไปสถานที่ใหม่

เมื่อขอสถานที่โดยระบุรหัสสถานที่ คุณจะมั่นใจได้ว่าจะได้รับสถานที่เดียวกันในการตอบกลับเสมอ (หากสถานที่ดังกล่าวยังคงมีอยู่) อย่างไรก็ตาม โปรดทราบว่าการตอบกลับอาจมีรหัสสถานที่ซึ่งแตกต่างจากรหัสในคำขอ

รายการช่อง

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

ระบุฟิลด์ต่อไปนี้อย่างน้อย 1 ฟิลด์

  • ฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details (ID Only) SKU

    GMSPlacePropertyPlaceID, GMSPlacePropertyName, GMSPlacePropertyPhotos

  • ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU รายละเอียดสถานที่ (ตำแหน่งเท่านั้น)

    GMSPlacePropertyAddressComponents, GMSPlacePropertyFormattedAddress, GMSPlacePropertyCoordinate, GMSPlacePropertyPlusCode, GMSPlacePropertyTypes, GMSPlacePropertyViewport

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

    GMSPlacePropertyBusinessStatus, GMSPlacePropertyIconBackgroundColor, GMSPlacePropertyIconImageURL, GMSPlacePropertyUTCOffsetMinutes, GMSPlacePropertyWheelchairAccessibleEntrance

  • ฟิลด์ต่อไปนี้จะทริกเกอร์ SKU รายละเอียดสถานที่ (ขั้นสูง)

    GMSPlacePropertyCurrentOpeningHours, GMSPlacePropertySecondaryOpeningHours, GMSPlacePropertyPhoneNumber, GMSPlacePropertyPriceLevel, GMSPlacePropertyRating, GMSPlacePropertyOpeningHours, GMSPlacePropertyUserRatingsTotal, GMSPlacePropertyWebsite

  • ฟิลด์ต่อไปนี้จะทริกเกอร์ Place Details (Preferred) SKU

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

ตัวอย่างต่อไปนี้ส่งรายการค่าช่อง 2 รายการเพื่อระบุว่าออบเจ็กต์ 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];
  

Places Swift SDK สำหรับ iOS (เวอร์ชันตัวอย่าง)

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

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

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

regionCode

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

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

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

sessionToken

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

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

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

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

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