Mendapatkan Lokasi Pengguna
Terima pembaruan lokasi dengan CLLocationManager.
Mendapatkan Lokasi Pengguna adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Swift Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Swift Academy mencakup 4 pelajaran total.
Memulai Pembaruan Lokasi
Setelah diotorisasi, panggil startUpdatingLocation() untuk mulai menerima aliran hasil lokasi secara berkelanjutan. Pengelola mengirimkannya melalui delegasi. Selalu panggil stopUpdatingLocation() saat Anda tidak lagi memerlukannya untuk menghemat baterai.
manager.startUpdatingLocation()
// ... later
manager.stopUpdatingLocation()Menerima Lokasi di Delegasi
Hasil lokasi baru tiba di locationManager(_:didUpdateLocations:). Array tersebut diurutkan dari yang paling lama ke yang paling baru, sehingga elemen terakhir adalah lokasi terbaru.
func locationManager(_ m: CLLocationManager,
didUpdateLocations locations: [CLLocation]) {
guard let latest = locations.last else { return }
print(latest.coordinate.latitude, latest.coordinate.longitude)
}Objek CLLocation
Setiap hasil lokasi berupa CLLocation yang berisi jauh lebih banyak daripada koordinat: coordinate, altitude, speed, course, timestamp, dan nilai akurasi. Periksa semua ini untuk menentukan apakah suatu hasil lokasi cukup baik.
func describe(_ loc: CLLocation) {
print("lat:", loc.coordinate.latitude)
print("lon:", loc.coordinate.longitude)
print("alt:", loc.altitude)
print("when:", loc.timestamp)
}Akurasi yang Diinginkan
Atur desiredAccuracy untuk memberi tahu Core Location seberapa presisi hasil lokasi yang Anda perlukan. Akurasi yang lebih tinggi menggunakan lebih banyak daya. Konstanta yang tersedia mencakup kCLLocationAccuracyBest, kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyHundredMeters, dan kCLLocationAccuracyKilometer.
manager.desiredAccuracy = kCLLocationAccuracyNearestTenMetersFilter Jarak
Gunakan distanceFilter untuk menahan pembaruan sampai perangkat berpindah setidaknya sejumlah meter tertentu. Ini mengurangi gangguan dan menghemat daya untuk kasus penggunaan yang tidak memerlukan setiap gerakan kecil.
manager.distanceFilter = 50 // metersMenilai Kualitas Hasil Lokasi
Properti horizontalAccuracy adalah radius keyakinan dalam meter. Nilai negatif berarti hasil lokasi tidak valid. Tolak juga hasil lokasi yang sudah usang dengan memeriksa usia timestamp.
func isUsable(_ loc: CLLocation) -> Bool {
guard loc.horizontalAccuracy >= 0 else { return false }
let age = -loc.timestamp.timeIntervalSinceNow
return age < 15 && loc.horizontalAccuracy < 100
}Meminta Lokasi Sekali Saja
Jika Anda hanya memerlukan satu hasil lokasi, bukan aliran berkelanjutan, panggil requestLocation(). Pengelola mengirimkan satu lokasi ke delegasi, lalu berhenti secara otomatis. Cara ini lebih hemat baterai daripada memulai pembaruan berkelanjutan.
manager.requestLocation()Menangani Kesalahan Lokasi
Kegagalan tiba di locationManager(_:didFailWithError:). Salah satu yang umum adalah CLError.locationUnknown, yang sering kali hanya sementara — teruslah menunggu. CLError.denied berarti izin telah dicabut dan Anda harus berhenti.
func locationManager(_ m: CLLocationManager,
didFailWithError error: Error) {
if let clErr = error as? CLError, clErr.code == .denied {
m.stopUpdatingLocation()
}
}Pemantauan Perubahan Signifikan
Untuk pelacakan dengan ketelitian rendah yang hemat daya dan dapat mengaktifkan aplikasi Anda saat background, gunakan startMonitoringSignificantLocationChanges(). Pemantauan ini hanya aktif setelah perangkat berpindah kira-kira 500 meter dan ideal untuk fitur yang berkaitan dengan wilayah.
manager.startMonitoringSignificantLocationChanges()Arah Kompas dan Lintasan
Untuk fitur kompas, startUpdatingHeading() mengirimkan arah magnetis atau sejati melalui locationManager(_:didUpdateHeading:). Perhatikan bahwa CLLocation.course (arah perjalanan) berbeda dari arah kompas (orientasi perangkat).
func locationManager(_ m: CLLocationManager,
didUpdateHeading newHeading: CLHeading) {
print("Heading:", newHeading.trueHeading)
}Menghitung Jarak Antartitik
CLLocation dapat mengukur jarak garis lurus ke lokasi lain dengan distance(from:), yang mengembalikan nilai dalam meter. Ini berguna untuk logika kedekatan tanpa antarmuka peta apa pun.
let a = CLLocation(latitude: 41.0, longitude: 28.9)
let b = CLLocation(latitude: 41.1, longitude: 29.0)
let meters = a.distance(from: b)
print("Distance:", meters)Pemeriksaan Singkat: Mendapatkan Lokasi
Periksa pemahaman Anda tentang menerima hasil lokasi.
Ringkasan: Mendapatkan Lokasi Pengguna
Sekarang Anda mengetahui cara memperoleh koordinat:
startUpdatingLocation()untuk aliran berkelanjutan,requestLocation()untuk satu hasil lokasi.- Baca hasil lokasi terbaru dari
locations.lastdi delegasi. - Sesuaikan
desiredAccuracydandistanceFilteruntuk menyeimbangkan daya dan presisi. - Validasi
horizontalAccuracydantimestampsebelum menggunakan hasil lokasi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Mendapatkan Lokasi Pengguna” gratis?
Ya — teks lengkap “Mendapatkan Lokasi Pengguna” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Swift Academy, upgrade ke CoddyKit PRO. Kursus Swift Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Mendapatkan Lokasi Pengguna”?
Terima pembaruan lokasi dengan CLLocationManager. Kamu berlatih Swift Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Swift Academy?
Tidak diperlukan pengalaman sebelumnya. Swift Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Mendapatkan Lokasi Pengguna” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Meminta Otorisasi Lokasi
- Mendapatkan Lokasi Pengguna
- Menampilkan Peta dalam SwiftUI
- Geocoding dan Wilayah