cum să adăugați o hartă în aplicația dvs. cu MapKit și Core Location-iOS Swift Guide

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

adăugați o adnotare pe hartă

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:

ia marcator de locație pentru locaț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:

valorile corespunzătoare proprietăților CLPlacemark

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.

obțineți adresa completă a șirului de la locația

acum să actualizăm apelul la updateLocationOnMap cu noua noastră funcție lookUpLocationName.

Afișați locația curentă pe hartă de la butonul Atingeți

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.

Afișați locația pe hartă pe baza unei adrese de șir

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.

Afișați locația în timp real pe hartă

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.



+