Tempat Saat Ini

Dengan menggunakan Places SDK for iOS, Anda dapat menemukan tempat tempat perangkat saat ini berada. Artinya, tempat di lokasi yang dilaporkan perangkat saat ini. Contoh tempat mencakup bisnis lokal, lokasi menarik, dan lokasi geografis.

  1. Meminta otorisasi akses lokasi
  2. Batas penggunaan
  3. Mendapatkan lokasi saat ini
  4. Menampilkan atribusi di aplikasi Anda

Meminta otorisasi lokasi

Jika aplikasi Anda menggunakan GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, aplikasi Anda harus meminta izin untuk menggunakan layanan lokasi. Tambahkan kunci NSLocationWhenInUseUsageDescription ke file Info.plist untuk menentukan string yang memberi tahu pengguna alasan Anda memerlukan layanan lokasi. Contoh:

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

Jika Anda ingin memanggil findPlaceLikelihoodsFromCurrentLocationWithPlaceFields: saat aplikasi berada di latar belakang, tanpa memicu dialog konfirmasi, lakukan langkah-langkah berikut sebelum melakukan panggilan:

  1. Tambahkan kunci NSLocationAlwaysUsageDescription ke file Info.plist Anda.
  2. Panggil requestAlwaysAuthorization pada instance CLLocationManager apa pun sebelum memanggil metode.

Minta otorisasi dari CLLocationManager sebagai berikut:

Swift

    locationManager.requestAlwaysAuthorization()
    

Objective-C

    [self.locationManager requestAlwaysAuthorization];
    

Mendapatkan lokasi saat ini

Untuk menemukan bisnis lokal atau tempat lain tempat perangkat saat ini berada, panggil GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:. Sertakan parameter berikut:

  • Satu atau beberapa GMSPlaceField, yang menentukan jenis data yang akan ditampilkan. Jika Anda menghapus parameter ini, SEMUA kolom yang memungkinkan akan ditampilkan, dan Anda akan ditagih sebagaimana mestinya. Hal ini hanya berlaku untuk permintaan Place Details.
  • Metode callback untuk menangani hasilnya.

Kolom sesuai dengan hasil Place Search, dan dibagi menjadi tiga kategori penagihan: Basic, Contact, dan Atmosphere. Kolom Basic ditagih dengan tarif dasar dan tidak dikenai biaya tambahan. Kolom Contact dan Atmosphere ditagih dengan tarif lebih tinggi. Untuk informasi selengkapnya tentang cara penagihan permintaan data Tempat, lihat Penggunaan dan Penagihan.

API memanggil metode callback yang ditentukan, yang menampilkan array objek GMSPlaceLikelihood.

Setiap objek GMSPlaceLikelihood mewakili tempat. Untuk setiap tempat, hasilnya menyertakan indikasi kemungkinan tempat tersebut adalah tempat yang tepat. Nilai yang lebih tinggi berarti kemungkinan tempat tersebut adalah kecocokan terbaik lebih besar. Buffer mungkin kosong, jika tidak ada tempat yang diketahui yang sesuai dengan lokasi perangkat.

Contoh kode berikut mengambil daftar tempat yang paling mungkin menjadi lokasi perangkat, dan mencatat nama serta kemungkinan untuk setiap tempat.

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);
    }
  }
}];

Catatan tentang nilai kemungkinan:

  • Kemungkinan memberikan probabilitas relatif tempat yang merupakan kecocokan terbaik dalam daftar tempat yang ditampilkan untuk satu permintaan. Anda tidak dapat membandingkan kemungkinan di berbagai permintaan.
  • Nilai kemungkinan akan berada antara 0 dan 1,0.
  • Jumlah kemungkinan dalam array objek GMSPlaceLikelihood yang ditampilkan selalu kurang dari atau sama dengan 1,0. Perhatikan bahwa jumlah tersebut tidak selalu 1,0.

Misalnya, untuk merepresentasikan kemungkinan 55% bahwa tempat yang benar adalah Tempat A, dan kemungkinan 35% bahwa tempat tersebut adalah Tempat B, array kemungkinan memiliki dua anggota: Tempat A dengan kemungkinan 0,55 dan Tempat B dengan kemungkinan 0,35.

Menampilkan atribusi di aplikasi

Saat aplikasi Anda menampilkan informasi yang diperoleh dari GMSPlacesClient findPlaceLikelihoodsFromCurrentLocationWithPlaceFields:, aplikasi juga harus menampilkan atribusi. Baca selengkapnya tentang atribusi.