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

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

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

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

GMSPlace มีข้อมูลเกี่ยวกับสถานที่ที่เจาะจง ซึ่งรวมถึงช่องข้อมูลทั้งหมดที่แสดงใน ช่องข้อมูลสถานที่ (ใหม่) รับ GMSPlace ด้วยการเรียก GMSPlacesClient fetchPlaceWithRequest:, การส่งออบเจ็กต์ GMSFetchPlaceRequest และ เมธอด Callback ของประเภท 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);
  }
}];

GooglePlacesSwift

// 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 และ Google API อื่นๆ รหัสสถานที่แต่ละรายการอ้างอิงถึงสถานที่ได้เพียงแห่งเดียว แต่สถานที่ 1 แห่งอาจมีมากกว่า รหัสสถานที่มากกว่า 1 รหัส

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

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

รายการช่อง

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

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

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

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

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

regionCode

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

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

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

sessionToken

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

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

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

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

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