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

เลือกแพลตฟอร์ม: Android iOS JavaScript เว็บเซอร์วิส
นักพัฒนาซอฟต์แวร์ในเขตเศรษฐกิจยุโรป (EEA)

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

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

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

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

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

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

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

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

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

Places Swift SDK

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

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);
  }
}];

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

รายละเอียดสถานที่แสดงผล 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 ซึ่งระบุว่าธุรกิจเปิด ปิด หรือไม่ทราบสถานะ

ภาษา ค่าหากเปิด ค่าหากปิด ค่าหากไม่ทราบสถานะ
Places Swift true false nil
Swift .open .closed .unknown
Objective-C GMSPlaceOpenStatusOpen GMSPlaceOpenStatusClosed GMSPlaceOpenStatusUnknown

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

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

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

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

Places Swift SDK

        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
        }
        

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
            }
          }];
          

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

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

รหัสสถานที่

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

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

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

รายการช่อง

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

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

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

Places Swift SDK

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

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];
  

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

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

regionCode

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

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

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

sessionToken

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

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

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

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

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