0Pricing
Swift Academy · Ders

Kullanıcının Konumunu Alma

CLLocationManager ile konum güncellemelerini alın.

Kullanıcının Konumunu Alma, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 2. 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.

Konum Güncellemelerini Başlatma

Yetkilendirme verildikten sonra sürekli bir konum ölçümü akışı almaya başlamak için startUpdatingLocation() çağrısını yapın. Yönetici bunları temsilci aracılığıyla iletir. Artık ihtiyaç duymadığınızda pil tasarrufu yapmak için her zaman stopUpdatingLocation() çağrısını yapın.

manager.startUpdatingLocation()
// ... later
manager.stopUpdatingLocation()

Temsilcide Konumları Alma

Yeni konum ölçümleri locationManager(_:didUpdateLocations:) içinde gelir. Dizi eskiden yeniye doğru sıralanır; bu nedenle son eleman en güncel konum ölçümüdür.

func locationManager(_ m: CLLocationManager,
                     didUpdateLocations locations: [CLLocation]) {
    guard let latest = locations.last else { return }
    print(latest.coordinate.latitude, latest.coordinate.longitude)
}

CLLocation Nesnesi

Her ölçüm, koordinatlardan çok daha fazlasını içeren bir CLLocation nesnesidir: coordinate, altitude, speed, course, timestamp ve doğruluk değerleri. Bir ölçümün yeterince iyi olup olmadığına karar vermek için bunları inceleyin.

func describe(_ loc: CLLocation) {
    print("lat:", loc.coordinate.latitude)
    print("lon:", loc.coordinate.longitude)
    print("alt:", loc.altitude)
    print("when:", loc.timestamp)
}

İstenen Doğruluk

CoreLocation’a ölçümlerin ne kadar kesin olması gerektiğini bildirmek için desiredAccuracy değerini ayarlayın. Daha yüksek doğruluk daha fazla güç tüketir. Sabitler arasında kCLLocationAccuracyBest, kCLLocationAccuracyNearestTenMeters, kCLLocationAccuracyHundredMeters ve kCLLocationAccuracyKilometer bulunur.

manager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters

Mesafe Filtresi

Cihaz en az belirli sayıda metre hareket edene kadar güncellemeleri bastırmak için distanceFilter kullanın. Bu, her küçük hareketi gerektirmeyen kullanım alanlarında gürültüyü azaltır ve güç tasarrufu sağlar.

manager.distanceFilter = 50 // meters

Ölçüm Kalitesini Değerlendirme

horizontalAccuracy özelliği, güven yarıçapını metre cinsinden belirtir. Negatif bir değer, ölçümün geçersiz olduğu anlamına gelir. Ayrıca timestamp değerinin ne kadar eski olduğunu denetleyerek güncelliğini yitirmiş ölçümleri reddedin.

func isUsable(_ loc: CLLocation) -> Bool {
    guard loc.horizontalAccuracy >= 0 else { return false }
    let age = -loc.timestamp.timeIntervalSinceNow
    return age < 15 && loc.horizontalAccuracy < 100
}

Tek Seferlik Konum İsteme

Bir akış yerine yalnızca tek bir konum ölçümüne ihtiyacınız varsa requestLocation() çağrısını yapın. Yönetici, temsilciye tek bir konum iletir ve ardından otomatik olarak durur. Bu yöntem, sürekli güncellemeleri başlatmaktan daha az pil tüketir.

manager.requestLocation()

Konum Hatalarını Yönetme

Hatalar locationManager(_:didFailWithError:) içinde gelir. Yaygın hatalardan biri genellikle geçici olan CLError.locationUnknown hatasıdır; beklemeye devam edin. CLError.denied, iznin geri alındığı anlamına gelir ve durmanız gerekir.

func locationManager(_ m: CLLocationManager,
                     didFailWithError error: Error) {
    if let clErr = error as? CLError, clErr.code == .denied {
        m.stopUpdatingLocation()
    }
}

Önemli Değişiklikleri İzleme

Uygulamanızı background durumunda uyandırabilen, düşük güç tüketimli ve yaklaşık konum takibi için startMonitoringSignificantLocationChanges() kullanın. Bu yöntem yalnızca cihaz yaklaşık 500 metre hareket ettikten sonra çalışır ve bölgeye duyarlı özellikler için idealdir.

manager.startMonitoringSignificantLocationChanges()

Yön ve Rota

Pusula özellikleri için startUpdatingHeading(), locationManager(_:didUpdateHeading:) aracılığıyla manyetik veya gerçek yön bilgisini iletir. CLLocation.course değerinin (hareket yönü), yön bilgisinden (cihazın yönelimi) farklı olduğunu unutmayın.

func locationManager(_ m: CLLocationManager,
                     didUpdateHeading newHeading: CLHeading) {
    print("Heading:", newHeading.trueHeading)
}

Noktalar Arasındaki Mesafeyi Hesaplama

CLLocation, distance(from:) ile başka bir konuma olan düz çizgi mesafesini ölçebilir ve sonucu metre cinsinden döndürür. Bu, herhangi bir harita arayüzü olmadan yakınlık mantığı uygulamak için kullanışlıdır.

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)

Hızlı Kontrol: Konum Alma

Konum ölçümlerini alma konusundaki kavrayışınızı sınayın.

Özet: Kullanıcının Konumunu Alma

Artık koordinatları nasıl alacağınızı biliyorsunuz:

  • Bir akış için startUpdatingLocation(), tek bir ölçüm için requestLocation() kullanın.
  • Temsilcide locations.last üzerinden en yeni ölçümü okuyun.
  • Güç tüketimi ile kesinlik arasında denge kurmak için desiredAccuracy ve distanceFilter değerlerini ayarlayın.
  • Bir ölçümü kullanmadan önce horizontalAccuracy ve timestamp değerlerini doğrulayın.

Sıkça Sorulan Sorular

“Kullanıcının Konumunu Alma” dersi ücretsiz mi?

Evet — “Kullanıcının Konumunu Alma” 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.

“Kullanıcının Konumunu Alma” dersinde ne öğreneceğim?

CLLocationManager ile konum güncellemelerini alın. 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 2. dersidir.

“Kullanıcının Konumunu Alma” 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