Bằng cách sử dụng SDK địa điểm dành cho iOS, bạn có thể khám phá địa điểm hiện tại của thiết bị. Có nghĩa là địa điểm mà bạn báo cáo tại vị trí hiện được báo cáo trên thiết bị. Ví dụ về các địa điểm bao gồm doanh nghiệp địa phương, địa điểm yêu thích và vị trí địa lý.
- Yêu cầu uỷ quyền vị trí
- Hạn mức sử dụng
- Lấy thông tin vị trí hiện tại
- Hiển thị mô hình phân bổ trong ứng dụng của bạn
Yêu cầu uỷ quyền 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 sẽ thông báo cho người dùng lý do bạn cần các 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 chạy trong 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 thực hiện cuộc gọi:
- Thêm khoá
NSLocationAlwaysUsageDescription
vào tệpInfo.plist
. - Gọi
requestAlwaysAuthorization
trên bất kỳ thực thể nào củaCLLocationManager
trước khi gọi phương thức này.
Yêu cầu uỷ quyền từ CLLocationManager
như sau:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
Đang xác định vị trí hiện tại
Để tìm doanh nghiệp địa phương hoặc địa điểm khác mà bạn hiện đang đặt thiết bị, hãy gọi GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
. Bao gồm các thông số sau:
- Một hoặc nhiều
GMSPlaceField
, xác định loại dữ liệu cần trả về. Nếu bạn bỏ qua thông số này, TẤT CẢ các trường có thể sẽ được trả về và bạn sẽ được lập hóa đơn tương ứng. Điều này chỉ áp dụng cho các yêu cầu Thông tin chi tiết về địa điểm. - 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ả trên Tìm kiếm địa điểm và được chia thành ba danh mục thanh toán: Cơ bản, Liên hệ và Bầu không khí. Các trường cơ bản được tính phí theo mức cơ bản và không tính thêm phí. Địa chỉ liên hệ và trường Khí quyển được tính phí cao hơn. Để biết thêm thông tin về cách tính phí các yêu cầu dữ liệu về Đị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 loạt các đối tượng GMSPlaceLikelihood
.
Mỗi đối tượng GMSPlaceLikelihood
biểu thị một địa điểm. Đối với mỗi địa điểm, kết quả sẽ bao gồm
chỉ báo về khả năng địa điểm đó là chính xác. Giá trị cao hơn nghĩa là xác suất phù hợp hơn cho địa điểm này. Vùng đệm có thể trống hoặc 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 xuất hiện nhất, đồng thời ghi nhật ký tên và khả năng 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ị có khả năng xảy ra:
- Khả năng cung cấp xác suất tương đối của địa điểm là phù hợp nhất trong danh sách địa điểm được trả về cho một yêu cầu. Bạn không thể so sánh khả năng giữa các yêu cầu.
- Giá trị của khả năng sẽ nằm trong khoảng từ 0 đến 1.0.
- Tổng xác suất trong một mảng đối tượng
GMSPlaceLikelihood
được trả về luôn nhỏ hơn hoặc bằng 1,0. Xin lưu ý rằng tổng này không cần thiết là 1,0.
Ví dụ: để thể hiện 55% khả năng là địa điểm chính xác là Địa điểm A, và 35% khả năng là địa điểm đó là Địa điểm B, thì mảng địa điểm có 2 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ị mô hình phân bổ 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
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
, ứng dụng đó cũng phải hiển thị các thông tin ghi nhận sự đóng góp. Đọc thêm về thuộc tính.