Pasul 4: localizați butonul me: Afișați locația pe hartă
primul pas, vom prelua locația curentă atunci când utilizatorul apasă butonul locate-me.
managerul de locație vă oferă locația curentă într-un obiect CLLocation
cu locationManager.location
. Acest obiect conține informații diferite, inclusiv valorile coordonatelor de latitudine și longitudine.
adăugați o adnotare pe hartă
să creăm o nouă funcție care va adăuga o adnotare pe hartă la coordonatele date.
următoarea funcție creează un nou obiect MKPointAnnotation
și îl adaugă pe hartă după eliminarea tuturor adnotărilor anterioare. De asemenea, mărește și derulează harta pentru a pune adnotarea nou adăugată în centrul ecranului.
acum că avem această funcție, o puteți apela cu informațiile despre locația curentă pe care doriți să le afișați, în funcția dvs. de buton IBAction. Deocamdată, vom pune nil
ca titlu, deoarece nu avem încă aceste informații.
updateLocationOnMap(to: locationManager.location, with: nil)
adăugați adresa completă a locației ca titlu la adnotare
acum, vom adăuga adresa completă a locației ca titlu la adnotare. CoreLocation ne oferă un ușor de a face acest lucru cu CLGeocoder
.
creați o extensie la CLLocation
și adăugați următoarea funcție:
se va inversa locația geocod și vă oferă o CLPlacemark
, care conține toate informațiile necesare pentru a extrage adresa poștală completă.
informațiile despre adresă sunt stocate ca mai jos în obiectul marcator de locație. Pentru a obține o valoare de șir a adresei complete, va trebui să concatenați componentele de care aveți nevoie. Iată un exemplu pentru adresa Apple HQ în tabelul de mai jos:
să adăugăm o funcție la Extensia noastră CLLocation
care ne va oferi direct adresa completă. Pentru comoditate, puteți adăuga o proprietate nouă într-o extensie de CLPlacemark
. În acest exemplu, această proprietate se numește stringValue
.
acum să actualizăm apelul la updateLocationOnMap
cu noua noastră funcție lookUpLocationName
.
Construiți și rulați aplicația: acum, când apăsați butonul locate-me, locația dvs. curentă este adăugată pe hartă, afișând adresa completă a locației curente!
adăugați un marcator de locație de la o adresă de șir la hartă
cea mai mare parte a funcției pe care am scris-o la Pasul 3 pentru butonul locate-me va fi de asemenea utilizată în această parte. Vom adăuga doar o nouă funcție updatePlaceMark(to address: String)
și o vom numi la validarea câmpului text.
în această funcție, vom primi mai întâi Marcatori de locație din valoarea șirului introdusă de utilizator, apoi vom actualiza harta cu primul marcator de locație cu valoarea completă a adresei.
rețineți că geocodeAddressString
nu este o caracteristică de căutare a locației, deci pentru ca aceasta să funcționeze va avea nevoie fie de o adresă validă, cât și de o locație identificabilă, un oraș, un stat sau o țară din câmp pentru a avea un rezultat.
Pasul 6: Afișați locația în timp real pe hartă
pentru a afișa locația în timp real, adăugați următoarea funcție de delegat în extensia CLLocationManagerDelegate
pe care am creat-o deja.
managerul de locație va apela automat această funcție la actualizările locației, conform Politicii definite la început.
Pasul 7: construiți & rulați
Construiți și rulați aplicația: Acum aveți o aplicație de hartă care vă arată locația dvs. curentă, afișând adresa completă în timp real, localizându-vă pe o atingere a butonului locate-me și permițându-vă să căutați locații dintr-un câmp text.