Địa điểm hiện tại

Chọn nền tảng: Android iOS

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 đang ở của thiết bị. Đó là địa điểm tại vị trí hiện đang đượ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, địa điểm yêu thích và vị trí địa lý.

  1. Yêu cầu uỷ quyền truy cập thông tin vị trí
  2. Giới hạn sử dụng
  3. Nhận thông tin vị trí hiện tại
  4. Hiển thị thuộc tính 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 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 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 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:

  1. Thêm khoá NSLocationAlwaysUsageDescription vào tệp Info.plist.
  2. Hãy gọi requestAlwaysAuthorization trên bất kỳ thực thể nào của CLLocationManager 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 tải 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 đặt thiết bị, hãy gọi GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Hãy đưa vào các tham 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Ả trường có thể sẽ được trả về và bạn sẽ bị tính phí tương ứng. Việc này chỉ áp dụng cho 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ả 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 sẽ được tính phí theo mức cơ bản và không phải chịu thêm phí. Trường Liên hệ và Bầu không khí được tính phí cao hơn. Để biết thêm thông tin về cách tính phí đối với 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ẽ bao gồm cả chỉ báo về khả năng địa điểm đó đúng là địa điểm bạn muốn tìm. Giá trị càng cao thì xác suất địa điểm đó là phù hợp nhất càng lớn. Vùng đệm có thể trống nếu không có vị trí nào tương ứng với vị trí 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 ở đó nhất, đồng thời ghi lại tên và khả năng xảy ra của 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 của địa điểm 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ị xác suất nằm trong khoảng từ 0 đến 1.0.
  • Tổng các khả năng trong một mảng được trả về của các đối tượng GMSPlaceLikelihood luôn nhỏ hơn hoặc bằng 1. Xin lưu ý rằng tổng không nhất thiết phải là 1.0.

Ví dụ: để biểu thị 55% khả năng địa điểm chính xác là Địa điểm A và 35% khả năng đó là Địa điểm B, mảng khả năng có hai thành phần: Địa điểm A với xác suất là 0,55 và Địa điểm B với xác suất là 0, 35.

Hiển thị các thuộc tính trong ứng dụng của bạn

Khi hiển thị thông tin lấy từ GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, ứng dụng cũng phải cho thấy các thuộc tính. Hãy đọc thêm về mô hình phân bổ.