så här lägger du till en karta i din App med MapKit och Core Location– iOS Swift Guide

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.

Lägg till en anteckning på kartan

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:

få platsmärke för plats

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:

värden som motsvarar CLPlacemark egenskaper

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.

få full strängadress från plats

låt oss nu uppdatera samtalet till updateLocationOnMap med vår nya lookUpLocationName – funktion.

Visa aktuell plats på kartan från knappen tryck på

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.

Visa plats på kartan baserat på en strängadress

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.

Visa plats i realtid på kartan

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.



+