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