Press ESC to close

Swift Konum Alma

Merhaba arkadaşlar. Bu yazımda Swift ile kullanıcıdan konum bilgisi alınır bundan bahsedeceğim. Öncelikle bu nerede işimize yarayacak ondan bahsedelim. Eğer ki bir harita uygulaması yapıyorsanız veya konumla alakalı işlemler yapıyorsanız bunu kullanmanız gerekiyor. Ben bu yazımda bir harita üzerinde nasıl kendi konumumu gösteririm ondan bahsedeceğim.

İlk önce storyboard üzerinde View Controller’ıma bir Map View ekliyorum. Ben tasarım açısından ekranımı yarıya bölüp orada göstereceğim.

Sonrasında bunu View Controller’da çalıştırmak için MapKit kütüphanesi import etmeliyiz. Aksi takdirde projemiz build olmayacaktır. Şimdi gelelim nasıl kullanıcının konum bilgisi alacağımıza.

Bir Location Manager oluşturmamız gerekiyor. Tabi bunu kullanmak için CoreLocation kütüphanesini import etmemiz gerekiyor. Ardından bu konum LocationManager’ın Delegate’ini vermemiz gerkeiyor. Bundan sonrasında işlemlerimiz daha basit. Burada Location Manager’a istenen doğruluk payını söylememiz gerekiyor. Burada bir çok farklı seçenekler mevcut. Benim istediğim mevcut en iyi konumu alması. Bunları yaparken telefon pilini de dikkate almanız gerekiyor. Ne kadar hassas ayarlarsanız o kadar fazla güç tüketimi olacaktır. Sonrasında ise kullacının lokasyonunu alabilmemiz için izin istemiliyiz. Burada çok fazla senaryo var. Eğer ki siz arka planda da kullanıcının konumunu alacaksanız farklı bir izin türü olan fonksiyonu seçemelisiniz. Ben sadece kullanıcı uygulamayı kullanırken konumunu almam yeterli olacağı için bu fonksiyonu kullandım. Tabi bununla da bitmiyor. Bu izin için Info.plist dosyasına da eklemeler yapmamız gerekmekte. Info.plist dosyanıza “Privacy – Location When In Use Usage Description” ekleyip açıklamanızı yazmanı yeterli olacaktır.

 

En son işlem ise konum alındığında olacaklardır. Benim bir defa kullanıcının konumunu almam yeterliydi. Bu yüzden sonrasında durdurdum ama siz kullanıcıyı takip etmek istiyorsanız. Buradan takip edebilirsiniz. Bu fonksyion CLLocationManagerDelegate’in bir override’dı. Bu yuzden muhakkak kullanmalısınız.

import UIKit
import MapKit
import CoreLocation

class ViewController: BaseViewController, CLLocationManagerDelegate {

    @IBOutlet weak var mapView: MKMapView!
    
    var locationManager = CLLocationManager()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        setUI()
    }
    
    func setUI() {
        configureLocationManager()
    }
    
    func configureLocationManager() {
        locationManager.delegate = self
        
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
        locationManager.requestWhenInUseAuthorization()
        locationManager.startUpdatingLocation()
    }
    
    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
        print(locations[0].coordinate)
        let location = CLLocationCoordinate2D(latitude: locations[0].coordinate.latitude, longitude: locations[0].coordinate.longitude)
        let span = MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05)
        let region = MKCoordinateRegion(center: location, span: span)
        mapView.setRegion(region, animated: true)
        locationManager.stopUpdatingLocation()
    }
}

Sormak istediğiniz yerler olursa mail veya yorum atarak ulaşabilirsiniz. İyi çalışmalar.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir