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

เลือกแพลตฟอร์ม: 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" (เส้นทาง), "New York" (เมือง) และ "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 จะเรียกเมธอดเรียกกลับที่ระบุ โดยส่งผ่านออบเจ็กต์ GMSPlace หากไม่พบสถานที่ ออบเจ็กต์สถานที่คือ nil

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 แห่ง

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

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

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