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

เลือกแพลตฟอร์ม: 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
    }
}

รับสถานที่ตามรหัส

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

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

  • สตริงที่มีรหัสสถานที่
  • GMSPlaceField อย่างน้อย 1 รายการที่ระบุประเภทข้อมูลที่จะแสดง
  • โทเค็นเซสชันหากมีการเรียกใช้เพื่อสรุปการค้นหาแบบเติมข้อความอัตโนมัติ หรือจะส่งค่า nil ก็ได้
  • 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 รหัส

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

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

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