steg 4: leta efter mig-knappen: Visa plats på kartan
första steget kommer vi att hämta den aktuella platsen när användaren trycker på locate-me-knappen.
platshanteraren ger dig den aktuella platsen i ett CLLocation
– objekt med locationManager.location
. Det här objektet innehåller olika information, inklusive värden för latitud och longitud.
Lägg till en anteckning på kartan
Låt oss skapa en ny funktion som lägger till en anteckning på kartan vid de angivna koordinaterna.
följande funktion skapar ett nytt MKPointAnnotation
– objekt och lägger till det på kartan efter att alla tidigare anteckningar har tagits bort. Det zoomar också och rullar kartan för att sätta den nyligen tillagda anteckningen i mitten av skärmen.
nu när vi har den här funktionen kan du ringa den med den aktuella platsinformationen du vill visa i din knapp IBAction-funktion. För tillfället lägger vi nil
som titel eftersom vi ännu inte har den här informationen.
updateLocationOnMap(to: locationManager.location, with: nil)
Lägg till den fullständiga adressen till platsen som titel till anteckningen
nu lägger vi till platsens fullständiga adress som titel till anteckningen. CoreLocation ger oss ett enkelt att göra det med CLGeocoder
.
skapa ett tillägg till CLLocation
och Lägg till följande funktion:
det kommer att vända geokodplatsen och ger dig en CLPlacemark
, som innehåller all information som behövs för att extrahera fullständig postadress.
adressinformation lagras enligt nedan i Placemark-objektet. För att få ett strängvärde för hela adressen måste du sammanfoga de komponenter du behöver. Här är ett exempel på Apple HQ-adress på tabellen nedan:
Låt oss lägga till en funktion till vår CLLocation
förlängning som ger oss den fullständiga adressen direkt. För enkelhetens skull kan du lägga till en ny egenskap i en förlängning av CLPlacemark
. I det här exemplet kallas den här egenskapen stringValue
.
låt oss nu uppdatera samtalet till updateLocationOnMap
med vår nya lookUpLocationName
– funktion.
Bygg och kör din app: nu när du trycker på locate-me-knappen läggs din nuvarande plats på kartan och visar din nuvarande plats fullständig adress!
Lägg till ett platsmärke från en strängadress till kartan
det mesta av funktionen vi skrev i steg 3 för locate-me-knappen kommer också att användas i den här delen. Vi lägger bara till en ny funktion updatePlaceMark(to address: String)
och kallar den vid textfältvalidering.
i den här funktionen får vi först platsmärken från strängvärdet som anges av användaren, då uppdaterar vi kartan med det första platsmärket med det fullständiga adressvärdet.
Observera att geocodeAddressString
inte är en platssökfunktion, så för att den ska fungera behöver den antingen en giltig adress och identifierbar plats, en stad, stat eller land i fältet för att få ett resultat.
steg 6: Visa plats i realtid på kartan
för att visa plats i realtid, lägg till följande delegatfunktion i tillägget CLLocationManagerDelegate
som vi redan skapat.
Platshanteraren anropar denna funktion automatiskt vid platsuppdateringar, enligt den princip som definierades i början.
Steg 7: Bygg & kör
Bygg och kör din app: Du har nu en kartapp som visar din nuvarande plats, visar hela adressen i realtid, lokaliserar dig på en knapptryckning för locate-me och låter dig söka efter platser från ett textfält.