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

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

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

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

GMSPlace จะให้ข้อมูลเกี่ยวกับสถานที่หนึ่งๆ คุณสามารถระงับ GMSPlace ด้วยวิธีต่อไปนี้

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

เนื่องจากผลลัพธ์ข้อมูลสถานที่ต้องไม่ว่างเปล่า ให้ระบุเฉพาะสถานที่ ผลลัพธ์ที่มีข้อมูลปรากฏขึ้น (ตัวอย่างเช่น ถ้าสถานที่ที่ขอไม่มีข้อมูล รูปภาพ ฟิลด์ photos จะไม่ปรากฏในผลการค้นหา)

ตัวอย่างต่อไปนี้ส่งผ่านรายการค่าช่อง 2 รายการ เพื่อระบุข้อมูลที่ส่งคืนจากคำขอ:

Swift

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

      // Specify the place data types to return.
      let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
      UInt(GMSPlaceField.placeID.rawValue))
  

Objective-C

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

      // Specify the place data types to return.
      GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);
  

ดูข้อมูลเพิ่มเติมเกี่ยวกับ ช่องตำแหน่ง สำหรับข้อมูลเพิ่มเติม ข้อมูลเกี่ยวกับวิธีเรียกเก็บเงินสำหรับคำขอให้ดูข้อมูลเกี่ยวกับสถานที่ โปรดดู การใช้งานและการเรียกเก็บเงิน

GMSPlace คลาสสามารถประกอบด้วยข้อมูลสถานที่ดังต่อไปนี้

  • name – ชื่อสถานที่
  • editorialSummary – ให้คำอธิบายง่ายๆ ของสถานที่
  • placeID – ตัวระบุแบบข้อความสำหรับสถานที่ อ่านแล้ว เพิ่มเติมเกี่ยวกับรหัสสถานที่ในส่วนอื่นของหน้านี้
  • coordinate – สถานที่ตั้งทางภูมิศาสตร์ของสถานที่ ระบุเป็นพิกัดละติจูดและลองจิจูด
  • phoneNumber – หมายเลขโทรศัพท์ของสถานที่ ใน รูปแบบระหว่างประเทศ
  • formattedAddress – ที่อยู่ที่มนุษย์อ่านได้ของ ตำแหน่งนั้น

    บ่อยครั้งที่ที่อยู่นี้เทียบเท่ากับที่อยู่ไปรษณีย์ โปรดทราบว่า ประเทศต่างๆ เช่น สหราชอาณาจักร ไม่อนุญาตให้เผยแพร่ ที่อยู่ไปรษณีย์เนื่องจากข้อจำกัดในการอนุญาตให้ใช้สิทธิ

    ที่อยู่ที่จัดรูปแบบประกอบด้วยที่อยู่ ที่อยู่อย่างน้อย 1 รายการตามตรรกะ คอมโพเนนต์ เช่น ที่อยู่ "111 8th Avenue, New York, NY" ประกอบด้วยคอมโพเนนต์ "111" (หมายเลขถนน) "ถนน 8th Avenue" (เส้นทาง), "นิวยอร์ก" (เมือง) และ "NY" (รัฐในสหรัฐอเมริกา)

    อย่าแยกวิเคราะห์ที่อยู่ที่จัดรูปแบบโดยใช้โปรแกรม แต่คุณควรใช้ คอมโพเนนต์ที่อยู่แต่ละรายการ ซึ่งการตอบสนองของ API จะรวมอยู่ด้วยนอกเหนือจาก ลงในฟิลด์ที่อยู่ที่จัดรูปแบบแล้ว

  • openingHours – เวลาเปิดทำการของสถานที่ (เป็น แสดงด้วย GMSOpeningHours) โทร GMSOpeningHours.weekdayText เพื่อดูรายการสตริงที่แปลแล้ว ของเวลาเปิดทำการของแต่ละสัปดาห์ โทรติดต่อ GMSOpeningHours.Periods เพื่อแสดงรายการ GMSPeriod ที่มีข้อมูลโดยละเอียดเพิ่มเติม ที่เทียบเท่ากับข้อมูลที่ให้ไว้โดย weekdayText หมายเหตุ: หากสถานที่เปิดอยู่ตลอดเวลา ระบบจะแสดงระยะเวลาเป็น วันอาทิตย์ตอนเที่ยงคืน และ closeEvent เป็นค่าว่าง
  • currentOpeningHours และ secondaryOpeningHours – ช่องที่มีวันหยุดและการเปลี่ยนแปลงชั่วคราวในกำหนดการสำหรับสถานที่
  • addressComponents – อาร์เรย์ของ ออบเจ็กต์ GMSAddressComponent รายการที่แสดงถึงคอมโพเนนต์ของ ของสถานที่ คอมโพเนนต์เหล่านี้มีไว้เพื่อ การดึงข้อมูลที่มีโครงสร้างเกี่ยวกับที่อยู่ของสถานที่ เช่น การค้นหาเมืองที่สถานที่นั้นตั้งอยู่ ไม่ใช้คอมโพเนนต์เหล่านี้ สำหรับการจัดรูปแบบที่อยู่ ให้ใช้ formattedAddress แทน ซึ่งมีที่อยู่ในรูปแบบที่แปลแล้ว

    โปรดทราบข้อเท็จจริงต่อไปนี้เกี่ยวกับ addressComponents อาร์เรย์:

    • อาร์เรย์ของคอมโพเนนต์ที่อยู่อาจมีคอมโพเนนต์มากกว่า formattedAddress
    • อาร์เรย์ไม่จำเป็นต้องรวมหน่วยงานทางการเมืองทั้งหมดที่ มีที่อยู่ นอกเหนือจากที่อยู่ที่ระบุใน formattedAddress
    • เราไม่รับประกันว่ารูปแบบของคําตอบจะยังคงเหมือนเดิม คำขอ โดยเฉพาะอย่างยิ่งจำนวนaddressComponents แตกต่างกันไปตามที่อยู่ที่ขอ และอาจเปลี่ยนแปลงเมื่อเวลาผ่านไป ที่อยู่เดียวกัน คอมโพเนนต์เปลี่ยนตำแหน่งในอาร์เรย์ได้ ประเภทของคอมโพเนนต์เปลี่ยนแปลงได้ คอมโพเนนต์เฉพาะอาจเป็น หายไปในการตอบกลับในภายหลัง
  • userRatingsTotal – แสดงจำนวนรีวิวประกอบ คะแนนของสถานที่

GMSPlace จะมีฟังก์ชันสมาชิกดังต่อไปนี้

  • isOpenจะคำนวณว่าสถานที่นั้นๆ เปิดในเวลาที่ระบุหรือไม่ จาก openingHours และ UTCOffsetMinutes รวมถึงวันที่และเวลาปัจจุบัน
  • isOpenAtDate คำนวณว่าสถานที่นั้นๆ เปิดในวันที่ที่ระบุหรือไม่ โดยอิงจาก openingHours และ UTCOffsetMinutes รวมถึงวันที่และเวลาปัจจุบัน
  • เมื่อใช้ฟังก์ชันเหล่านี้เพื่อดูเวลาเปิดทำการและ/หรือวันที่ ฟังก์ชันเดิม fetchPlaceFromPlaceID: หรือ findPlaceLikelihoodsFromUserLocationWithPlaceFields: คำขอต้องระบุทั้ง GMSPlaceFieldOpeningHours และ GMSPlaceFieldUTCOffsetMinutes ด้วย หากไม่มีช่องใดช่องหนึ่งข้างต้น GMSPlace ผลลัพธ์ จะไม่มีเวลาหรือวันที่เปิดทำการ และระบบจะส่งการเรียก GMSPlaceOpenStatusUnknown เพื่อให้ได้ผลลัพธ์ที่ถูกต้อง โปรดส่งคำขอ GMSPlaceFieldBusinessStatus และ GMSPlaceFieldUTCOffsetMinutes ไว้ในคำขอสถานที่เดิมของคุณ หากไม่ได้ร้องขอ จะถือว่า ดำเนินธุรกิจอยู่

    ดูวิธีใช้วิดีโอนี้ isOpenพร้อมรายละเอียดสถานที่

รับเวลาทำการพิเศษ

แม้ว่าจะได้รับข้อมูลเวลาทำการปกติจนถึงวันที่ openingHours, currentOpeningHours และ secondaryOpeningHours จะมีการเปลี่ยนแปลงวันหยุดและกำหนดการชั่วคราว คุณกรองและนำเสนอเวลาทำการที่ยอดเยี่ยมสำหรับวันพิเศษเหล่านี้ได้ หากมี

Swift

    func examineOpeningHours(place: GMSPlace) {

      // Check if the current opening hours contains a special day that has exceptional hours
      guard let currentOpeningHours = place.currentOpeningHours else { return }
      if let specialDays = currentOpeningHours.specialDays {
        guard !specialDays.isEmpty else { return }
        if let specialDay = specialDays.filter { $0.isExceptional }.first  {
          // Indicate exceptional hours
        }
      }

      // Check if current opening hours contains a truncated time period
      let periods = currentOpeningHours.periods

      if !periods.isEmpty {
        for period in periods {
          let open = period.open
          let close = period.close

          if let open = open {
            let date = open.date

            if open.isTruncated {
              // Indicate truncated time period
            }
          }
        }
      }

      // Check if the place's secondary opening hours indicate when delivery is available
      let secondaryOpeningHours = place.secondaryOpeningHours
      guard let hoursType = secondaryOpeningHours.first?.hoursType else {
      return
      }

      if (hoursType == GMSPlaceHoursTypeDelivery) {
        // Indicate hours where delivery is available
      }
  }

Objective-C

- (void)examineOpeningHours:(GMSPlace *) place {

    // Check if the current opening hours contains a special day that has exceptional hours
    GMSOpeningHours *currentOpeningHours = place.currentOpeningHours;
    if (currentOpeningHours != nil) {
      NSArray<GMSPlaceSpecialDay *> *specialDays = currentOpeningHours.specialDays;
      if ([specialDays count] != 0) {
        for (GMSPlaceSpecialDay *specialDay in specialDays) {
          NSDate *date = specialDay.date;
          if ([specialDay isExceptional]) {
            // Indicate exceptional hours
          }
        }
      }
    }

    // Check if current opening hours contains a truncated time period
    NSArray <GMSPeriod *> * periods = currentOpeningHours.periods;

    if ([periods count] != 0) {
      for (GMSPeriod * period in periods) {
        GMSTimeOfWeek *open = period.open;
        GMSTimeOfWeek *close = period.close;

        if (open) {
          if ([open isTruncated]) {
            // Indicate truncated time period
          }
        }
      }
    }

    // Check if the place's secondary opening hours indicate when delivery is available
    GMSOpeningHours *secondaryOpeningHours = place.secondaryOpeningHours;
    GMSPlaceHoursType hoursType = secondaryOpeningHours.getHoursType;

    if (hoursType == GMSPlaceHoursTypeDelivery) {
      // Indicate hours where delivery is available
    }
}

รับสถานที่โดยใช้รหัส

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

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

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

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

Swift

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

// Specify the place data types to return.
let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
  UInt(GMSPlaceField.placeID.rawValue))!

placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: {
  (place: GMSPlace?, error: Error?) in
  if let error = error {
    print("An error occurred: \(error.localizedDescription)")
    return
  }
  if let place = place {
    self.lblName?.text = place.name
    print("The selected place is: \(place.name)")
  }
})

Objective-C

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

// Specify the place data types to return.
GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);

[_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"An error occurred %@", [error localizedDescription]);
    return;
  }
  if (place != nil) {
    NSLog(@"The selected place is: %@", [place name]);
  }
}];

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

เมื่อแอปแสดงข้อมูลที่ได้จาก GMSPlacesClient lookUpPlaceID:callback: แอปจะต้องแสดงการระบุแหล่งที่มาด้วย ดูเอกสารใน การระบุแหล่งที่มา

ข้อมูลเพิ่มเติมเกี่ยวกับรหัสสถานที่

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

รหัสสถานที่แต่ละรายการอ้างอิงถึงสถานที่ได้เพียงแห่งเดียว แต่สถานที่ 1 แห่งอาจมีมากกว่า รหัสสถานที่มากกว่า 1 รหัส

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

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

สำหรับข้อมูลเพิ่มเติม โปรดดู ภาพรวมรหัสสถานที่