Swift Academy · Pelajaran

Geocoding dan Wilayah

Konversikan koordinat menjadi alamat dan pantau wilayah.

Pelajaran 4 dari 413 langkah

Geocoding dan Wilayah adalah pelajaran Swift Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Apa Itu Geokode

Geokode mengubah alamat manusia menjadi koordinat; geokode balik mengubah koordinat kembali menjadi alamat yang dapat dibaca. Core Location menyediakan CLGeocoder untuk keduanya dengan berkomunikasi dengan server Apple.

import CoreLocation
let geocoder = CLGeocoder()

Mengubah Alamat Menjadi Koordinat

Panggil geocodeAddressString(_:) dengan alamat bebas. Hasilnya mengembalikan array objek CLPlacemark; ambil objek pertama dan baca location-nya.

geocoder.geocodeAddressString("Eiffel Tower, Paris") { placemarks, error in
    if let coord = placemarks?.first?.location?.coordinate {
        print(coord.latitude, coord.longitude)
    }
}

Mengubah Koordinat Menjadi Alamat

Diberi sebuah CLLocation, reverseGeocodeLocation(_:) mengembalikan penanda tempat yang menjelaskan titik tersebut: jalan, kota, negara, kode pos, dan lainnya.

let loc = CLLocation(latitude: 48.8584, longitude: 2.2945)
geocoder.reverseGeocodeLocation(loc) { placemarks, error in
    if let p = placemarks?.first {
        print(p.name ?? "", p.locality ?? "", p.country ?? "")
    }
}

Struktur CLPlacemark

CLPlacemark menyediakan bidang yang kaya informasi: name, thoroughfare (jalan), locality (kota), administrativeArea (wilayah administratif), postalCode, country, dan isoCountryCode. Banyak bidang bersifat opsional, jadi tangani nilainya dengan hati-hati.

func format(_ p: CLPlacemark) -> String {
    [p.thoroughfare, p.locality, p.country]
        .compactMap { $0 }
        .joined(separator: ", ")
}

Keterbatasan Geokoder

CLGeocoder bergantung pada jaringan dan memiliki frekuensi permintaan yang dibatasi. Ajukan satu permintaan pada satu waktu, hindari perulangan rapat, dan batalkan pekerjaan yang sedang berjalan dengan cancelGeocode() saat hasilnya tidak lagi diperlukan.

geocoder.cancelGeocode()

Geokode Asinkron dengan Async/Await

Swift modern menawarkan varian asinkron, sehingga Anda dapat menulis kode linear dengan try await alih-alih penangan penyelesaian.

func coordinate(for address: String) async throws -> CLLocationCoordinate2D? {
    let placemarks = try await geocoder.geocodeAddressString(address)
    return placemarks.first?.location?.coordinate
}

Memperkenalkan Pemantauan Wilayah

Pemantauan wilayah (pagar geografis) memungkinkan sistem memberi tahu app Anda saat perangkat masuk atau keluar dari area melingkar yang ditentukan—bahkan saat app Anda tidak sedang berjalan. Fitur ini memerlukan otorisasi Selalu.

// Requires NSLocationAlwaysAndWhenInUseUsageDescription
manager.requestAlwaysAuthorization()

Mendefinisikan CLCircularRegion

Pagar geografis adalah CLCircularRegion dengan pusat, radius (meter), dan pengenal unik. Atur notifyOnEntry dan notifyOnExit untuk memilih peristiwa yang ingin Anda pantau.

let region = CLCircularRegion(
    center: CLLocationCoordinate2D(latitude: 41.0, longitude: 29.0),
    radius: 200,
    identifier: "OfficeZone"
)
region.notifyOnEntry = true
region.notifyOnExit = true

Memulai Pemantauan Wilayah

Panggil startMonitoring(for:) untuk memulainya. Perangkat memberlakukan batas (sekitar 20 wilayah per app), jadi pantau hanya wilayah yang paling relevan pada satu waktu.

if CLLocationManager.isMonitoringAvailable(for: CLCircularRegion.self) {
    manager.startMonitoring(for: region)
}

Menerima Peristiwa Masuk/Keluar

Metode delegasi didEnterRegion dan didExitRegion dijalankan saat batas dilintasi. Gunakan identifier milik wilayah untuk mengetahui pagar geografis mana yang memicunya.

func locationManager(_ m: CLLocationManager, didEnterRegion region: CLRegion) {
    print("Entered:", region.identifier)
}
func locationManager(_ m: CLLocationManager, didExitRegion region: CLRegion) {
    print("Exited:", region.identifier)
}

Memeriksa Keadaan Saat Ini

Untuk mengetahui apakah perangkat sudah berada di dalam suatu wilayah tanpa menunggu pelintasan batas, panggil requestState(for:). Hasilnya diterima di didDetermineState sebagai .inside, .outside, atau .unknown.

manager.requestState(for: region)

func locationManager(_ m: CLLocationManager,
                     didDetermineState state: CLRegionState,
                     for region: CLRegion) {
    print(region.identifier, state == .inside ? "inside" : "outside")
}

Uji Cepat: Geokode dan Wilayah

Verifikasikan pemahaman Anda.

Ringkasan: Geokode dan Wilayah

Anda telah mempelajari cara menerjemahkan alamat menjadi koordinat dan sebaliknya, serta memantau batas geografis:

  • CLGeocoder melakukan geokode maju dan balik (tersedia varian asinkron); frekuensi penggunaannya dibatasi.
  • CLPlacemark menyimpan berbagai bidang alamat yang semuanya bersifat opsional.
  • CLCircularRegion mendefinisikan pagar geografis; pemantauan memerlukan otorisasi Selalu.
  • Tangani didEnterRegion/didExitRegion dan periksa keadaan dengan requestState(for:).
Gratis untuk memulai

Belajar Swift dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
122
Pelajaran
409

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Geocoding dan Wilayah” gratis?

Ya — teks lengkap “Geocoding dan Wilayah” 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 “Geocoding dan Wilayah”?

Konversikan koordinat menjadi alamat dan pantau wilayah. 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 4 dari 4.

Berapa lama pelajaran “Geocoding dan Wilayah” 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