Khi sử dụng SDK Địa điểm cho iOS, bạn có thể khám phá địa điểm mà thiết bị đang ở đó. Tức là địa điểm tại vị trí hiện được báo cáo của thiết bị. Ví dụ về địa điểm bao gồm các doanh nghiệp địa phương, điểm yêu thích và vị trí địa lý.
- Yêu cầu cấp quyền truy cập thông tin vị trí
- Hạn mức sử dụng
- Lấy thông tin vị trí hiện tại
- Hiển thị thông tin ghi nhận tác giả trong ứng dụng
Yêu cầu uỷ quyền truy cập thông tin vị trí
Nếu ứng dụng của bạn sử dụng
GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:,
thì ứng dụng đó phải yêu cầu quyền sử dụng dịch vụ vị trí. Thêm khoá NSLocationWhenInUseUsageDescription vào tệp Info.plist để xác định chuỗi thông báo cho người dùng biết lý do bạn cần dịch vụ vị trí. Ví dụ:
<key>NSLocationWhenInUseUsageDescription</key> <string>Show your location on the map</string>
Nếu bạn muốn gọi
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: khi
ứng dụng đang chạy ở chế độ nền mà không kích hoạt hộp thoại xác nhận, hãy thực hiện
các bước sau trước khi gọi:
- Thêm khoá
NSLocationAlwaysUsageDescriptionvào tệpInfo.plist. - Gọi
requestAlwaysAuthorizationtrên bất kỳ thực thể nào củaCLLocationManagertrước khi gọi phương thức.
Yêu cầu uỷ quyền từ CLLocationManager như sau:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
Lấy thông tin vị trí hiện tại
Để tìm doanh nghiệp địa phương hoặc địa điểm khác nơi thiết bị hiện đang
đặt, hãy gọi
GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Thêm các tham số sau:
- Một hoặc nhiều
GMSPlaceField, chỉ định loại dữ liệu cần trả về. Nếu bạn bỏ qua tham số này, thì TẤT CẢ các trường có thể có sẽ được trả về và bạn sẽ được tính phí tương ứng. Điều này chỉ áp dụng cho các yêu cầu về Place Details. - Một phương thức gọi lại để xử lý kết quả.
Các trường tương ứng với kết quả Tìm kiếm địa điểm và được chia thành ba danh mục thanh toán: Cơ bản, Thông tin liên hệ và Bầu không khí. Các trường cơ bản được tính phí theo mức giá cơ bản và không phát sinh thêm phí. Các trường Tiếp xúc và Bầu không khí được tính phí ở mức cao hơn. Để biết thêm thông tin về cách tính phí cho 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.
API gọi phương thức gọi lại đã chỉ định, trả về một mảng các đối tượng GMSPlaceLikelihood.
Mỗi đối tượng GMSPlaceLikelihood đại diện cho một địa điểm. Đối với mỗi địa điểm, kết quả sẽ cho biết khả năng địa điểm đó là địa điểm phù hợp. Giá trị càng cao thì xác suất địa điểm đó là kết quả phù hợp nhất càng lớn. Vùng đệm có thể trống nếu không có địa điểm nào đã biết tương ứng với vị trí của thiết bị.
Mã mẫu sau đây truy xuất danh sách các địa điểm mà thiết bị có nhiều khả năng đang ở đó nhất, đồng thời ghi lại tên và khả năng xảy ra cho từng địa điểm.
Swift
// Specify the place data types to return. let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) | UInt(GMSPlaceField.placeID.rawValue))! placesClient?.findPlaceLikelihoodsFromCurrentLocation(withPlaceFields: fields, callback: { (placeLikelihoodList: Array<GMSPlaceLikelihood>?, error: Error?) in if let error = error { print("An error occurred: \(error.localizedDescription)") return } if let placeLikelihoodList = placeLikelihoodList { for likelihood in placeLikelihoodList { let place = likelihood.place print("Current Place name \(String(describing: place.name)) at likelihood \(likelihood.likelihood)") print("Current PlaceID \(String(describing: place.placeID))") } } })
Objective-C
// Specify the place data types to return. GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID); [_placesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:fields callback:^(NSArray<GMSPlaceLikelihood *> * _Nullable likelihoods, NSError * _Nullable error) { if (error != nil) { NSLog(@"An error occurred %@", [error localizedDescription]); return; } if (likelihoods != nil) { for (GMSPlaceLikelihood *likelihood in likelihoods) { GMSPlace *place = likelihood.place; NSLog(@"Current place name: %@", place.name); NSLog(@"Place ID: %@", place.placeID); } } }];
Lưu ý về các giá trị khả năng:
- Khả năng này cung cấp xác suất tương đối về việc địa điểm đó là kết quả phù hợp nhất trong danh sách các địa điểm được trả về cho một yêu cầu. Bạn không thể so sánh khả năng xảy ra giữa các yêu cầu khác nhau.
- Giá trị của khả năng sẽ nằm trong khoảng từ 0 đến 1.
- Tổng xác suất trong một mảng được trả về của các đối tượng
GMSPlaceLikelihoodluôn nhỏ hơn hoặc bằng 1. Lưu ý rằng tổng không nhất thiết phải là 1.0.
Ví dụ: để thể hiện xác suất 55% rằng địa điểm chính xác là Địa điểm A và xác suất 35% rằng đó là Địa điểm B, mảng xác suất có hai thành viên: Địa điểm A có xác suất là 0,55 và Địa điểm B có xác suất là 0, 35.
Hiển thị thông tin ghi nhận tác giả trong ứng dụng
Khi ứng dụng của bạn hiển thị thông tin lấy từ GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, ứng dụng cũng phải hiển thị thông tin ghi nhận tác giả. Đọc thêm về thông tin ghi nhận tác giả.