0Pricing
Swift Academy · Pelajaran

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 = kCLLocationAccuracyNearestTenMeters

Filter 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 // meters

Menilai 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.last di delegasi.
  • Sesuaikan desiredAccuracy dan distanceFilter untuk menyeimbangkan daya dan presisi.
  • Validasi horizontalAccuracy dan timestamp sebelum 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

  1. Meminta Otorisasi Lokasi
  2. Mendapatkan Lokasi Pengguna
  3. Menampilkan Peta dalam SwiftUI
  4. Geocoding dan Wilayah
← Kembali ke Swift Academy