MapKit: Auto Location
MapKit ile bulunduğunuz konumu otomatik olarak belirleyebilirsiniz. Gelin bunu nasıl yapabileceğimizi öğrenelim!
MapKit serimizin ikinci yazısı ile tekrar sizlerleyiz. Kodlamaya başlamadan önce MapKit serimize ait ilk yazıyı kesinlikle incelemenizi öneririm.
Bu yazımızda cihazımızın anlık ve gerçek lokasyonunu nasıl alacağımızdan bahsedeceğim. 🙂
Hadi Başlayalım
Storyboard’a “MapView” ve “Button” elemanlarını ekleyelim. “MapView” elemanını ekranımızı tamamen kaplayacak şekilde konumlandırdık. “Button” elemanını ise sağ alt köşeye konumlandırdık.
“Button” elemanının ayarlarını yapalım.
İnternetten indirdiğim herhangi bir PNG görselini “Button” elemanının arkaplanı olarak ayarladım. (PNG görseline GitHub linkinden ulaşabilirsiniz.)
“Button” ve “WebView” elemanlarının ayarlarını yaptığımıza göre kodlamaya geçebiliriz.
Hadi Kodlayalım
İlk olarak MapKit kütüphanesini “import” edelim.
ViewController içinde “MKMapView” ve “CLLocation” sınıfını tanımlayalım.
“mapView” elemanının özelliklerini ayarlayalım.
Cihazımızın enlem ve boylam olarak konumunu alalım.
Cihazın anlık konum değişikliklerini gözlemlemek için “delegate” kullanacağız.
Extension yazalım.
switch status {}
kodunu yazdıktan sonra karşımıza bir uyarı çıkacak. Üzerine tıklayıp ‘Fix’ diyelim.
“Fix” üzerine tıkladıktan sonra Map uygulamamızın konum alırken karşılaşacağı hatalar otomatik olarak “case” içerisine dolduruldu. Bu hataların açıklamalarını aşağıdaki linkte detaylı bir şekilde bulabilirsiniz.
“Switch — Case” yapımızın içini dolduralım.
case .notDetermined:
kod bloğunun içine locationManager.requestWhenInUseAuthorization()
fonksiyonunu yazalım. Bu fonksiyon sayesinde uygulamamız ilk açıldığında kullanıcıdan izin isteyecek. Şimdi ise sıra uygulamamızı çalıştırmada.
Uygulamayı çalıştırdığımızda, info.plist dosyasında konum servislerine izin vermemiz gerektiğini söyleyen bir uyarı ile karşılaşacağız.
Info.plist dosyamıza gidelim ve gerekli izini verelim.
Info.plist dosyasına girin ‘+’ işaretine tıklayın;
“Privacy — Location When In Use Usage Description” ifadesini ekleyin. Not: “Value” yazan yere istediğinizi yazabilirsiniz.
Uygulamamızı Test Edelim
Not: Simülatörde gerçek konum alınamamaktadır. Ama Xcode üzerinden sahte konum verebiliriz.
Xcode uygulamasındayken üst menüden “Debug -> Simulate Location” adımlarını takip edip karşınıza çıkan menüden istediğiniz bir konumu seçin.
Simulatör üzerinden de sahte konum verilebilmektedir.
Simulatör’e tıklayıp “Debug -> Location ->” adımlarını takip edip karşınıza çıkan menüden istediğiniz bir konumu seçin.
“Button” Elemanımızı Tanımlayalım
Vee kodlamamız bitti! 🎉 Şimdi ise uygulamamızı birlikte test ederek bitmiş haline bir göz atalım.
Test Edelim
Hareketli olarak konum almak için Simulatör’e tıklayın;
Debug -> Location -> Freeway Drive
Kodlarımızı Keşfedelim
Bu uygulamayı keşfetmek ve kendiniz denemek istiyorsanız kaynak kodları GitHub üzerinden indirebilirsiniz:
https://github.com/TurkishKit/MapKitRealLocation
Not: Uygulamayı telefonunuzda test ederseniz bulunduğunuz konumu gösterecektir.
Bir yazımızın daha sonuna gelmiş bulunmaktayız. Bir sonraki yazımızda görüşmek dileğiyle 🤗
Şimdi Sıra Sende 😉
“Alert” fonksiyonu oluşturarak, “case” içerisindeki “print()” fonksiyonlarını kaldırarak “UIAlert” fonksiyonunu yazınız. Sonuç olarak “print()” fonksiyonu sadece konsolda çalışıyor ve kullanıcı “print()” fonksiyonunu göremiyor. Amacımız kullanıcıyı uygulamanın gelişiminden haberdar etmek. Projelerinizi bekliyoruz!🤟🏻
Not: UIAlertController hakkında bilgi sahibi değilseniz aşağıdaki linkten UIAlert dersimize göz atabilirsiniz.