Trinn 4: Finn Meg-Knapp: Vis Plassering På Kartet
Første trinn vil vi hente gjeldende plassering når brukeren trykker på finn-meg-knappen 🧭.
location manager gir deg gjeldende plassering i et CLLocation
objekt med locationManager.location
. Dette objektet inneholder forskjellig informasjon, inkludert bredde-og lengdegradskoordinater.
Legg til En merknad På Kartet
la oss opprette en ny funksjon som vil legge til en merknad på kartet ved de oppgitte koordinatene.
følgende funksjon oppretter et nytt MKPointAnnotation
objekt, og legger det til på kartet etter at alle tidligere merknader er fjernet. Det zoomer også og ruller kartet for å sette den nylig lagt merknad på midten av skjermen.
Nå som vi har denne funksjonen, kan du ringe den med gjeldende posisjonsinformasjon du vil vise, i knappen IBAction-funksjonen. For nå vil vi sette nil
som tittel siden vi ikke har denne informasjonen ennå.
updateLocationOnMap(to: locationManager.location, with: nil)
Legg til hele adressen til stedet som tittel til merknaden
Nå legger vi til stedets fulle adresse som tittel til merknaden. CoreLocation gir oss en enkel å gjøre det med CLGeocoder
.
Opprett en utvidelse til CLLocation
og legg til følgende funksjon:
det vil reversere geokodeplasseringen og gir deg en CLPlacemark
, som inneholder all informasjon som trengs for å trekke ut full postadresse.
Adresseinformasjon lagres som nedenfor i Stedsmarkeringsobjektet. For å få en strengverdi av hele adressen, må du sammenkoble komponentene du trenger. Her er et eksempel På Apple HQ-adresse på tabellen nedenfor:
La oss legge til en funksjon i vår CLLocation
utvidelse som gir oss hele adressen direkte. For enkelhets skyld kan du legge til en ny eiendom i en utvidelse på CLPlacemark
. I dette eksemplet kalles denne egenskapen stringValue
.
la Oss nå oppdatere anropet til updateLocationOnMap
med vår nye lookUpLocationName
– funksjon.
Bygg og kjør appen din: nå når du trykker på locate-me-knappen, blir din nåværende posisjon lagt til på kartet, og viser din nåværende posisjon full adresse!
Legg Til Et Stedsmerke Fra en strengadresse Til Kartet
Det Meste av funksjonen vi skrev I Trinn 3 for locate-me-knappen vil også bli brukt i denne delen. Vi vil bare legge til en ny funksjon updatePlaceMark(to address: String)
og kaller Det På TextField validering.
i denne funksjonen får vi først stedsmarkeringer fra strengverdien angitt av brukeren, så oppdaterer vi kartet med første stedsmarkering med full adresseverdi.
Merk at geocodeAddressString
ikke er en posisjonssøkefunksjon, så for at den skal fungere, må den enten ha en gyldig adresse og identifiserbar plassering, en by, stat eller land i feltet for å få et resultat.
Trinn 6: Vis Sanntidsplassering På Kartet
hvis du vil vise sanntidsplassering, legger du til følgende delegatfunksjon i utvidelsen CLLocationManagerDelegate
som vi allerede har opprettet.
Lokasjonsbehandleren kaller Denne funksjonen automatisk på plasseringsoppdateringer, i henhold til policyen som ble definert i begynnelsen.
Trinn 7: Bygg & Kjør
Bygg og Kjør appen din: Du har nå Et Kart app som viser deg din nåværende posisjon, viser hele adressen i sanntid, finne deg på en finn-meg knappen trykk og lar deg søke etter steder fra et tekstfelt.