SDK Địa điểm dành cho iOS cung cấp cho ứng dụng của bạn nhiều thông tin phong phú về các địa điểm, bao gồm tên và địa chỉ của địa điểm, vị trí địa lý được chỉ định dưới dạng vĩ độ/kinh độ, loại địa điểm (chẳng hạn như hộp đêm, cửa hàng thú cưng, bảo tàng), v.v. Để truy cập vào thông tin này cho một địa điểm cụ thể, bạn có thể sử dụng mã địa điểm. Đây là giá trị nhận dạng cố định giúp nhận dạng một địa điểm duy nhất.
Thông tin chi tiết về địa điểm
Lớp GMSPlace
cung cấp thông tin về một địa điểm cụ thể. Bạn có thể giữ đối tượng GMSPlace
theo các cách sau:
- Gọi
GMSPlacesClient findPlaceLikelihoodsFromUserLocationWithPlaceFields:
. Xem hướng dẫn để nhận địa điểm hiện tại. - Gọi
GMSPlacesClient fetchPlaceFromPlaceID:
, truyềnGMSPlaceField
, mã địa điểm và phương thức gọi lại. Đối với yêu cầu Thông tin chi tiết về địa điểm, nếu bạn không chỉ định ít nhất một trường có yêu cầu hoặc nếu bạn bỏ qua tham sốfields
khỏi yêu cầu, thì TẤT CẢ trường có thể sẽ được trả về và bạn sẽ bị tính phí tương ứng. Hãy xem hướng dẫn để nhận địa điểm theo mã nhận dạng.
Khi yêu cầu một địa điểm, bạn phải chỉ định những loại dữ liệu địa điểm cần trả về. Để thực hiện việc này, hãy truyền GMSPlaceField
, chỉ định các kiểu dữ liệu cần trả về. Đây là một yếu tố quan trọng cần cân nhắc vì yếu tố này sẽ ảnh hưởng đến
chi phí của mỗi yêu cầu.
Vì kết quả dữ liệu địa điểm không được để trống, nên chỉ kết quả địa điểm có dữ liệu được trả về (ví dụ: nếu địa điểm được yêu cầu không có ảnh, trường photos
sẽ không xuất hiện trong kết quả).
Ví dụ sau đây chuyển danh sách hai giá trị trường để chỉ định dữ liệu mà một yêu cầu trả về:
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);
Tìm hiểu thêm về trường địa điểm. Để biết thêm thông tin về cách tính phí đối với các yêu cầu dữ liệu Địa điểm, hãy xem phần Mức sử dụng và thanh toán.
Lớp
GMSPlace
có thể chứa các dữ liệu địa điểm sau:
name
– Tên của địa điểm.editorialSummary
– Cung cấp nội dung mô tả đơn giản về một địa điểm.placeID
– Giá trị nhận dạng dạng văn bản của địa điểm. Hãy đọc thêm về mã địa điểm trong phần còn lại của trang này.coordinate
– Vị trí địa lý của địa điểm, được chỉ định dưới dạng toạ độ theo vĩ độ và kinh độ.phoneNumber
– Số điện thoại của địa điểm, ở định dạng quốc tế.formattedAddress
– Địa chỉ của vị trí này mà con người có thể đọc được.Thông thường, địa chỉ này tương đương với địa chỉ bưu điện. Xin lưu ý rằng một số quốc gia, chẳng hạn như Vương quốc Anh, không cho phép phân phối địa chỉ bưu chính thực sự do các quy định hạn chế về việc cấp phép.
Địa chỉ được định dạng bao gồm một hoặc nhiều thành phần địa chỉ về mặt logic. Ví dụ: địa chỉ "111 8th Avenue, New York, NY" bao gồm các thành phần sau: "111" (số nhà), "8th Avenue" (tuyến đường), "New York" (thành phố) và "NY" (tiểu bang Hoa Kỳ).
Không phân tích cú pháp địa chỉ đã định dạng theo lập trình. Thay vào đó, bạn nên sử dụng các thành phần địa chỉ riêng lẻ (trong đó phản hồi API sẽ bao gồm những thành phần này bên cạnh trường địa chỉ đã định dạng).
openingHours
– Giờ mở cửa của địa điểm (như được thể hiện bằngGMSOpeningHours
). GọiGMSOpeningHours.weekdayText
để nhận danh sách chuỗi văn bản đã bản địa hoá về giờ mở cửa hằng ngày trong tuần. GọiGMSOpeningHours.Periods
để trả về danh sách cácGMSPeriod
có thông tin chi tiết hơn tương đương với dữ liệu doweekdayText
cung cấp. Lưu ý: Nếu một địa điểm luôn mở cửa, thì khoảng thời gian sẽ được biểu thị là lúc nửa đêm Chủ Nhật vàcloseEvent
có giá trị rỗng.currentOpeningHours
vàsecondaryOpeningHours
– Các trường có các thay đổi tạm thời và kỳ nghỉ trong lịch biểu cho một địa điểm.addressComponents
– Một mảng các đối tượngGMSAddressComponent
đại diện cho các thành phần của địa chỉ của một địa điểm. Các thành phần này được cung cấp nhằm mục đích trích xuất thông tin có cấu trúc về địa chỉ của một địa điểm, chẳng hạn như tìm thành phố nơi có một địa điểm. Đừng dùng các thành phần này để định dạng địa chỉ. Thay vào đó, hãy sử dụng thuộc tínhformattedAddress
để cung cấp địa chỉ đã định dạng đã được bản địa hoá.Hãy lưu ý những thông tin thực tế sau về mảng
addressComponents
:- Mảng các thành phần địa chỉ có thể chứa nhiều thành phần hơn
formattedAddress
. - Mảng này không nhất thiết bao gồm mọi pháp nhân chính trị có chứa địa chỉ, ngoại trừ những pháp nhân có trong
formattedAddress
. - Định dạng của phản hồi không đảm bảo sẽ giữ nguyên giữa các yêu cầu. Cụ thể, số lượng
addressComponents
sẽ thay đổi tuỳ theo địa chỉ được yêu cầu và có thể thay đổi theo thời gian đối với cùng một địa chỉ. Một thành phần có thể thay đổi vị trí trong mảng. Loại thành phần có thể thay đổi. Có thể thiếu một thành phần cụ thể trong phản hồi sau đó.
- Mảng các thành phần địa chỉ có thể chứa nhiều thành phần hơn
userRatingsTotal
– Thể hiện số lượng bài đánh giá tạo nên điểm xếp hạng của địa điểm.
Lớp GMSPlace
chứa các hàm thành phần sau:
-
isOpen
tính toán xem một địa điểm có mở cửa vào thời gian nhất định hay không, dựa trênopeningHours
vàUTCOffsetMinutes
cũng như ngày giờ hiện tại. isOpenAtDate
tính toán xem một địa điểm có mở cửa vào một ngày cụ thể hay không, dựa trênopeningHours
vàUTCOffsetMinutes
cũng như ngày và giờ hiện tại.
Khi sử dụng các hàm này để xem giờ mở cửa và/hoặc ngày, yêu cầu fetchPlaceFromPlaceID:
hoặc findPlaceLikelihoodsFromUserLocationWithPlaceFields:
ban đầu phải chỉ định CẢ GMSPlaceFieldOpeningHours
và GMSPlaceFieldUTCOffsetMinutes
trường. Nếu thiếu một trong hai trường này, thì đối tượng GMSPlace
thu được sẽ không chứa ngày hoặc giờ mở cửa và lệnh gọi sẽ trả về GMSPlaceOpenStatusUnknown
. Để đảm bảo kết quả chính xác, hãy yêu cầu các trường GMSPlaceFieldBusinessStatus
và GMSPlaceFieldUTCOffsetMinutes
trong yêu cầu đặt chỗ ban đầu của bạn. Nếu bạn không yêu cầu, hệ thống sẽ giả định rằng doanh nghiệp đang hoạt động.
isOpen
với Thông tin chi tiết về địa điểm.
Tận hưởng những giờ đặc biệt
Mặc dù giờ mở cửa thông thường được lấy thông quaopeningHours
, currentOpeningHours
và secondaryOpeningHours
hỗ trợ các thay đổi tạm thời về lịch biểu và ngày nghỉ.
Bạn có thể lọc và hiển thị giờ đặc biệt cho những ngày đặc biệt này nếu có.
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 } }
Xem địa điểm theo mã địa điểm
Mã địa điểm là giá trị nhận dạng dạng văn bản giúp nhận dạng duy nhất một địa điểm. Trong SDK Địa điểm dành cho iOS, bạn có thể truy xuất mã nhận dạng của một địa điểm từ đối tượng GMSPlace
. Bạn có thể lưu trữ mã địa điểm và sử dụng mã này để truy xuất lại đối tượng GMSPlace
vào lúc khác.
Để nhận một địa điểm theo mã nhận dạng, hãy gọi GMSPlacesClient
fetchPlaceFromPlaceID:
, truyền các tham số sau:
- Một chuỗi ký tự chứa một Mã địa điểm.
- Một hoặc nhiều
GMSPlaceField
, chỉ định kiểu dữ liệu cần trả về. - Mã phiên hoạt động nếu lệnh gọi được thực hiện để kết thúc một truy vấn tự động hoàn thành. Nếu không, hãy truyền nil.
GMSPlaceResultCallback
để xử lý kết quả.
API gọi phương thức gọi lại đã chỉ định, truyền vào đối tượng GMSPlace
. Nếu không tìm thấy địa điểm, đối tượng của địa điểm là giá trị không.
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]); } }];
Hiển thị thuộc tính trong ứng dụng của bạn
Khi hiển thị thông tin lấy từ GMSPlacesClient
lookUpPlaceID:callback:
, ứng dụng cũng phải hiện các thuộc tính.
Hãy xem tài liệu về mô hình phân bổ.
Tìm hiểu thêm về mã địa điểm
Mã địa điểm được sử dụng trong SDK Địa điểm dành cho iOS giống với giá trị nhận dạng được sử dụng trong API Địa điểm, SDK Địa điểm dành cho Android và các API khác của Google.
Mỗi mã địa điểm chỉ có thể đề cập đến một địa điểm, nhưng một địa điểm có thể có nhiều mã địa điểm.
Có những trường hợp có thể khiến một địa điểm nhận được mã địa điểm mới. Ví dụ: tình trạng này có thể xảy ra nếu doanh nghiệp chuyển đến địa điểm mới.
Khi yêu cầu một địa điểm bằng cách chỉ định mã địa điểm, bạn có thể yên tâm rằng bạn sẽ luôn nhận được cùng một địa điểm trong phản hồi (nếu địa điểm đó vẫn tồn tại). Tuy nhiên, xin lưu ý rằng phản hồi có thể chứa một mã địa điểm khác với mã trong yêu cầu của bạn.
Để biết thêm thông tin, hãy xem tổng quan về mã địa điểm.