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ề 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ư câu lạc bộ đêm, cửa hàng thú cưng, bảo tàng), v.v. Để truy cập 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 giúp nhận dạng duy nhất một địa điểm.
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ữ một đố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 các 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ó một yêu cầu, hoặc nếu bạn bỏ qua tham sốfields
trong một yêu cầu, thì TẤT CẢ các trường có thể sẽ được trả về và bạn sẽ được tính phí tương ứng. Xem hướng dẫn về cách nhận một đị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 loại dữ liệu địa điểm cần trả về. Để thực hiện việc này, hãy chuyển GMSPlaceField
, chỉ định loại dữ liệu cần trả về. Đây là một yếu tố quan trọng cần cân nhắc vì điều này sẽ ảnh hưởng đến chi phí cho mỗi yêu cầu.
Vì kết quả dữ liệu địa điểm không được để trống, nên chỉ những kết quả địa điểm có dữ liệu mới đượ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 đây chuyển danh sách 2 giá trị trường để chỉ định dữ liệu do 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í 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 dữ liệu địa điểm sau:
name
– Tên địa điểm.placeID
– Giá trị nhận dạng văn bản cho đị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 vĩ độ và kinh độ.phoneNumber
– Số điện thoại của địa điểm, ở định dạng quốc tế.formattedAddress
– Địa chỉ mà người dùng có thể đọc được này.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 hạn chế 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ỉ theo logic. Ví dụ: địa chỉ "111 8th Avenue, New York, NY" bao gồm các thành phần sau: "111" (số đường phố), "8th Avenue" (tuyến đường), "New York" (thành phố) và "NY" (tiểu bang Hoa Kỳ).
Không được 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ẻ mà phản hồi API bao gồm ngoài trường địa chỉ đã được định dạng.
openingHours
– Giờ mở cửa của địa điểm (doGMSOpeningHours
biểu thị). GọiGMSOpeningHours.weekdayText
để nhận danh sách các chuỗi đã được bản địa hoá của giờ mở cửa hằng ngày trong tuần. GọiGMSOpeningHours.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, thì 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.addressComponents
– Một loạt các đối tượngGMSAddressComponent
đại diện cho các thành phần của địa chỉ cho một địa điểm. Những thành phần này được cung cấp để trích xuất thông tin có cấu trúc về địa chỉ của một địa điểm, ví dụ như tìm thành phố có địa điểm. Đừng sử 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ỉ được định dạng).Hãy lưu ý những dữ kiện sau về mảng
addressComponents
:- Dãy thành phần địa chỉ có thể chứa nhiều thành phần hơn
formattedAddress
. - Mảng không nhất thiết phải bao gồm tất cả thực thể chính trị có chứa địa chỉ, ngoài những thực thể có trong
formattedAddress
. - Định dạng của phản hồi không được đảm bảo sẽ vẫn giữ nguyên giữa các yêu cầu. Cụ thể, số lượng
addressComponents
sẽ khác nhau tùy 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. Thành phần cụ thể có thể bị thiếu trong phản hồi sau.
- Dãy 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 liệu một địa điểm có mở cửa vào một thời điểm nhất định 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 liệu đị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 sử dụng các hàm này để biết thời gian mở và/hoặc ngày, yêu cầu fetchPlaceFromPlaceID:
hoặc findPlaceLikelihoodsFromUserLocationWithPlaceFields:
ban đầu phải chỉ định CẢ hai trường GMSPlaceFieldOpeningHours
và GMSPlaceFieldUTCOffsetMinutes
. Nếu một trong hai trường này bị thiếu, đối tượng GMSPlace
kết quả sẽ không chứa ngày hoặc giờ mở 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 đị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 đang hoạt động.
isOpen
với Thông tin chi tiết về địa điểm.
Tìm địa điểm theo mã nhận dạng
Mã địa điểm là giá trị nhận 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ã đó để truy xuất lại đối tượng GMSPlace
sau này.
Để tìm 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 loại dữ liệu cần trả về. - Mã thông báo phiên nếu cuộc 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.
- Một
GMSPlaceResultCallback
để xử lý kết quả.
API gọi phương thức gọi lại đã chỉ định, truyền vào một đối tượng
GMSPlace
. Nếu không tìm thấy địa điểm, đối tượng địa điểm sẽ là giá trị rỗ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 thu thập được từ GMSPlacesClient
lookUpPlaceID:callback:
, ứng dụng cũng phải hiển thị các thông tin ghi nhận sự đóng góp.
Xem tài liệu về thuộc tính.
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 là giá trị nhận dạng giống với mã đượ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ể liên kết với 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ụ: điều này có thể xảy ra nếu một 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ột mã địa điểm, bạn có thể tin tưởng rằng mình 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, hãy lưu ý rằng nội dung phản hồi có thể chứa mã địa điểm khác với mã địa điểm trong yêu cầu của bạn.
Để biết thêm thông tin, hãy xem bài viết tổng quan về mã địa điểm.