Khi sử dụng SDK Địa điểm dành cho iOS, bạn có thể khám phá vị trí hiện tại của thiết bị. 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 doanh nghiệp địa phương, điểm tham quan và vị trí địa lý.
- Yêu cầu uỷ quyền truy cập thông tin vị trí
- Giới hạn sử dụng
- Lấy thông tin vị trí hiện tại
- Hiển thị thông tin phân bổ 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 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 thực hiện lệnh 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.
Hãy yêu cầu CLLocationManager
uỷ quyền như sau:
Swift
locationManager.requestAlwaysAuthorization()
Objective-C
[self.locationManager requestAlwaysAuthorization];
Xác định 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 nằm, hãy gọi GMSPlacesClient
findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:
. Hãy bao gồm các thông số sau:
- Một hoặc nhiều
GMSPlaceField
, chỉ định kiểu dữ liệu cần trả về. Nếu bạn bỏ qua tham số này, TẤT CẢ các trường có thể 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ề Chi tiết đị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ả Tìm kiếm địa điểm và được chia thành 3 danh mục tính phí: Thông tin cơ bản, Thông tin liên hệ và Không gian. Các trường cơ bản được tính theo mức giá cơ bản và không tính thêm phí. Các trường Liên hệ 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í các yêu cầu dữ liệu về Địa điểm, hãy xem phần Mức sử dụng và tính phí.
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ả bao gồm chỉ báo khả năng địa điểm đó là phù hợp. Giá trị càng cao thì xác suất nơi đó là kết quả phù hợp nhất càng cao. Vùng đệm có thể trống nếu không có vị trí nào xác định được tương ứng với vị trí của thiết bị.
Mã mẫu sau đây truy xuất danh sách những địa điểm mà thiết bị có nhiều khả năng nằm ở đó nhất, đồng thời ghi lại tên và xác suất 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ị xác suất:
- Giá trị này cho biết xác suất tương đối của việc địa điểm là kết quả 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 xác suất giữa các yêu cầu.
- Giá trị xác suất sẽ nằm trong khoảng từ 0 đến 1.0.
- Tổng xác suất trong mảng đối tượng
GMSPlaceLikelihood
được trả về luôn nhỏ hơn hoặc bằng 1.0. Lưu ý rằng tổng này không nhất thiết phải là 1.0.
Ví dụ: để thể hiện xác suất 55% là địa điểm chính xác là Địa điểm A và xác suất 35% là Địa điểm B, mảng xác suất sẽ có hai thành phầ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 phân bổ trong ứng dụng
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ị thông tin phân bổ. Đọc thêm về mô hình phân bổ.