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

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

Sử dụng SDK Địa điểm dành cho iOS, bạn có thể khám phá nơi mà thiết bị hiện đã được xác định vị trí. Tức là vị trí trên thiết bị vị trí được báo cáo hiện tại. 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ý.

  1. Yêu cầu cho phép truy cập thông tin vị trí
  2. Hạn mức sử dụng
  3. Lấy 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 sử dụng GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, ứng dụng của bạn phải yêu cầu quyền để sử dụng dịch vụ vị trí. Thêm Chìa khoá NSLocationWhenInUseUsageDescription cho thiết bị Info.plist của bạn để xác định chuỗi thông báo cho người dùng lý do bạn cần thông tin vị trí luôn miễn phí. Ví dụ:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Show your location on the map</string>

Nếu bạn muốn gọi điện 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 đây trước khi thực hiện cuộc gọi:

  1. Thêm khoá NSLocationAlwaysUsageDescription vào tệp Info.plist.
  2. 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.

Yêu cầu CLLocationManager uỷ quyền 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 đang dùng thiết bị đã xác định vị trí, gọi GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Bao gồm các thông số sau:

  • Một hoặc nhiều GMSPlaceField, chỉ định loại dữ liệu quay lại. 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ẽ được lập hoá đơn tương ứng. Việc này chỉ áp dụng cho các yêu cầu về 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 loại thanh toán: Cơ bản, liên lạc 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 phát sinh thêm các khoản phí. Các trường Địa chỉ liên hệ và Bầu không khí có mức phí cao hơn. Thông tin khác về cách lập hoá đơn cho các yêu cầu dữ liệu địa điểm, hãy xem 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 GMSPlaceLikelihood .

Một GMSPlaceLikelihood đối tượng đại diện cho 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à đúng. Giá trị cao hơn có nghĩa là xác suất địa điểm phù hợp nhất sẽ cao hơn. Vùng đệm có thể hãy để trống nếu không có địa điểm đã 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 vị trí có thiết bị có nhiều khả năng ở đó nhất và ghi lại tên cũng như khả năng xảy ra cho mỗi đị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:

  • Xác suất cung cấp xác suất tương đối về địa điểm phù hợp nhất trong danh sách địa điểm được trả về cho một một yêu cầu duy nhất. 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 sẽ 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 GMSPlaceLikelihood luôn nhỏ hơn hoặc bằng 1.0. Lưu ý rằng tổng không phải là nhất thiết phải là 1.0.

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

Hiển thị thông tin ghi nhận sự đóng góp 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 ghi nhận sự đóng góp. Đọc thêm về phân bổ.