MapKit: Auto Location

MapKit ile bulunduğunuz konumu otomatik olarak belirleyebilirsiniz. Gelin bunu nasıl yapabileceğimizi öğrenelim!

Ufuk Köşker
TurkishKit
4 min readJan 6, 2020

--

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.

Storyboard tasarımımızı yaptı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” elemanının arkaplanını değiştirdik.
“Button” elemanımıza yükseklik ve genişlik verdik.

“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.

MapKit kütüphanesini “import” ettik.

ViewController içinde “MKMapView” ve “CLLocation” sınıfını tanımlayalım.

“mapView” ve “locationManager” sınıflarını tanımladık.

“mapView” elemanının özelliklerini ayarlayalım.

Cihazımızın enlem ve boylam olarak konumunu alalım.

Enlem ve boylam olarak konum aldık.
mapView için ayar yaptık.

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.

Apple web sitesindeki açıklamalar

“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.

Bizi daha yakından takip etmek istiyorsanız, sosyal medya hesaplarımıza aşağıdan ulaşabilirsiniz.

Twitter | Instagram | Facebook

--

--