Hoe voeg ik een kaart toe aan uw App met MapKit en Core Location– iOS Swift Guide

Stap 4: Zoek me knop: Toon locatie op de kaart

eerste stap, zullen we de huidige locatie ophalen wanneer de gebruiker op de knop Zoek-me drukt 🧭.

de locatiebeheerder geeft u de huidige locatie in een CLLocation object met locationManager.location. Dit object bevat verschillende informatie, waaronder lengte-en breedtegraadcoördinaten.

voeg een annotatie toe aan de kaart

laten we een nieuwe functie maken die een annotatie toevoegt aan de kaart op de opgegeven coördinaten.

de volgende functie maakt een nieuw MKPointAnnotation object aan en voegt het toe aan de kaart nadat alle voorgaande annotaties zijn verwijderd. Het zoomt en scrollt ook de kaart om de nieuw toegevoegde annotatie in het midden van het scherm te plaatsen.

voeg een annotatie toe aan de kaart

nu we deze functie hebben, kunt u deze aanroepen met de huidige locatiegegevens die u wilt weergeven, in uw button IBAction-functie. Voor nu zetten we nil als titel omdat we deze informatie nog niet hebben.

updateLocationOnMap(to: locationManager.location, with: nil)

voeg het volledige adres van de locatie als titel toe aan de annotatie

nu zullen we het volledige adres van de locatie als titel toevoegen aan de annotatie. CoreLocation geeft ons een eenvoudig te doen met CLGeocoder.

Maak een extensie aan naar CLLocation en voeg de volgende functie toe:

plaatsmarkering ophalen voor locatie

het zal de geocode-locatie omkeren en geeft u een CLPlacemark, die alle informatie bevat die nodig is om het volledige postadres te extraheren.

adresgegevens worden opgeslagen zoals hieronder in het plaatsmarkeringsobject. Om een tekenreekswaarde van het volledige adres te krijgen, moet u de componenten samenvoegen die u nodig hebt. Hier is een voorbeeld voor Apple HQ adres op de onderstaande tabel:

waarden die overeenkomen met clplacemark properties

laten we een functie toevoegen aan onze CLLocation extensie die ons direct het volledige adres geeft. Voor het gemak kunt u een nieuwe eigenschap toevoegen in een extensie van CLPlacemark. In dit voorbeeld wordt deze eigenschap stringValuegenoemd.

haal het volledige string adres van locatie

laten we nu de aanroep bijwerken naar updateLocationOnMap met onze nieuwe lookUpLocationName functie.

Toon huidige locatie op kaart vanaf de knop Tik

bouw en voer uw app uit: nu wanneer u op de knop locate-me drukt, wordt uw huidige locatie toegevoegd op de kaart, met het volledige adres van uw huidige locatie!

voeg een plaatsmarkering van een string-adres toe aan de kaart

het grootste deel van de functie die we in Stap 3 hebben geschreven voor de locate-me-knop zal ook in dit deel worden gebruikt. We zullen alleen een nieuwe functie updatePlaceMark(to address: String) toevoegen en deze aanroepen op TextField validation.

in deze functie krijgen we eerst plaatsmarkeringen van de door de gebruiker ingevoerde tekenreekswaarde, waarna we de kaart bijwerken met de eerste plaatsmarkering met de volledige adreswaarde.

toon locatie op kaart gebaseerd op een string adres

merk op dat geocodeAddressString geen locatiezoekfunctie is, dus om het te laten werken heeft het een geldig adres nodig en een identificeerbare locatie, een stad, staat of land in het veld om een resultaat te hebben.

Stap 6: Toon Real-Time locatie op de kaart

voeg de volgende functie delegeren toe aan de CLLocationManagerDelegate extensie die we al hebben gemaakt om real-time locatie weer te geven.

de locatiebeheerder zal deze functie automatisch aanroepen bij locatie-updates, volgens het beleid dat aan het begin is gedefinieerd.

toon real-time locatie op kaart

Stap 7: bouwen & uitvoeren

uw app bouwen en uitvoeren: Je hebt nu een kaart app die u uw huidige locatie, het weergeven van het volledige adres in real time, het lokaliseren van u op een locate-me knop Tik en zodat u kunt zoeken naar locaties uit een tekstveld.



+