0Pricing
Swift Academy · Ders

Jeokodlama ve Bölgeler

Koordinatları adreslere dönüştürün ve bölgeleri izleyin.

Jeokodlama ve Bölgeler, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

Coğrafi Kodlama Nedir

Coğrafi kodlama, insan tarafından okunabilir bir adresi koordinatlara dönüştürür; tersine coğrafi kodlama ise koordinatları okunabilir bir adrese dönüştürür. CoreLocation, her iki işlem için de Apple’ın sunucularıyla iletişim kuran CLGeocoder sınıfını sağlar.

import CoreLocation
let geocoder = CLGeocoder()

Bir Adresi İleriye Doğru Coğrafi Kodlama

Serbest biçimli bir adresle geocodeAddressString(_:) çağrısını yapın. Tamamlanma sonucu bir CLPlacemark nesneleri dizisi döndürür; ilkini alın ve location değerini okuyun.

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

Koordinatları Tersine Coğrafi Kodlama

Bir CLLocation verildiğinde reverseGeocodeLocation(_:), bu noktayı açıklayan yer işaretleri döndürür: cadde, şehir, ülke, posta kodu ve daha fazlası.

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 ?? "")
    }
}

CLPlacemark Yapısı

Bir CLPlacemark zengin alanlar sunar: name, thoroughfare (cadde), locality (şehir), administrativeArea (eyalet), postalCode, country ve isoCountryCode. Bunların çoğu isteğe bağlıdır; bu nedenle dikkatle açın.

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

Coğrafi Kodlayıcının Sınırlamaları

CLGeocoder ağ tabanlıdır ve istek hızı sınırlıdır. Aynı anda yalnızca bir istek gönderin, sıkı döngülerden kaçının ve sonuca artık ihtiyaç duyulmadığında devam eden işlemi cancelGeocode() ile iptal edin.

geocoder.cancelGeocode()

Eşzamansız/Beklemeli Coğrafi Kodlama

Modern Swift, tamamlama işleyicileri yerine try await kullanarak doğrusal kod yazmanıza olanak tanıyan eşzamansız çeşitlemeler sunar.

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

Bölge İzlemeyi Tanıtma

Bölge izleme (coğrafi sınırlandırma), cihaz tanımlanmış dairesel bir alana girdiğinde veya alandan çıktığında, uygulamanız çalışmıyor olsa bile sistemin uygulamanıza bildirim göndermesini sağlar. Bunun için Her Zaman yetkilendirmesi gerekir.

// Requires NSLocationAlwaysAndWhenInUseUsageDescription
manager.requestAlwaysAuthorization()

CLCircularRegion Tanımlama

Coğrafi sınır, bir merkez, yarıçap (metre cinsinden) ve benzersiz bir tanımlayıcı içeren bir CLCircularRegion nesnesidir. Hangi olaylarla ilgilendiğinizi seçmek için notifyOnEntry ve notifyOnExit değerlerini ayarlayın.

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

Bölge İzlemeyi Başlatma

Başlamak için startMonitoring(for:) çağrısını yapın. Cihaz bir sınır uygular (uygulama başına yaklaşık 20 bölge), bu nedenle aynı anda yalnızca en ilgili bölgeleri izleyin.

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

Giriş/Çıkış Olaylarını Alma

Sınırlar geçildiğinde didEnterRegion ve didExitRegion temsilci yöntemleri çalışır. Hangi coğrafi sınırın tetiklendiğini öğrenmek için bölgenin identifier değerini kullanın.

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

Mevcut Durumu Sorgulama

Bir geçişi beklemeden cihazın zaten bir bölgenin içinde olup olmadığını öğrenmek için requestState(for:) çağrısını yapın. Sonuç, didDetermineState içinde .inside, .outside veya .unknown olarak gelir.

manager.requestState(for: region)

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

Kısa Kontrol: Coğrafi Kodlama ve Bölgeler

Anlayışınızı doğrulayın.

Özet: Coğrafi Kodlama ve Bölgeler

Adreslerle koordinatlar arasında dönüşüm yapmayı ve coğrafi sınırları izlemeyi öğrendiniz:

  • CLGeocoder ileri ve tersine coğrafi kodlama yapar (eşzamansız çeşitlemeleri de vardır); kullanım sıklığı sınırlıdır.
  • CLPlacemark, tümü isteğe bağlı olan zengin adres alanlarını içerir.
  • CLCircularRegion coğrafi sınırları tanımlar; izleme için Her Zaman yetkilendirmesi gerekir.
  • didEnterRegion/didExitRegion olaylarını işleyin ve requestState(for:) ile durumu sorgulayın.

Sıkça Sorulan Sorular

“Jeokodlama ve Bölgeler” dersi ücretsiz mi?

Evet — “Jeokodlama ve Bölgeler” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“Jeokodlama ve Bölgeler” dersinde ne öğreneceğim?

Koordinatları adreslere dönüştürün ve bölgeleri izleyin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“Jeokodlama ve Bölgeler” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Konum Yetkilendirmesi İsteme
  2. Kullanıcının Konumunu Alma
  3. SwiftUI'de Haritaları Görüntüleme
  4. Jeokodlama ve Bölgeler
← Swift Academy Sayfasına Dön